shell数组

Posted wangyp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell数组相关的知识,希望对你有一定的参考价值。

chapter 13.shell数组的应用实践

1.介绍
shell数组是元素的集合,数据的一种格式;

2.定义
array=(value1 value2 value3...)
	对于元素较长的:竖着写 静态的!
array=($(命令)) array(`命令`)
	动态的

3.打印
打印数组个数:echo ${#array[*]} echo ${#array[@]}
打印数组元素:所有元素:echo ${array[*]} echo ${array[@]} 单个元素: echo ${array[0]}

4.删除
unset array ##删除整个数组
unset array[0] ##删除第一个元素

5.示例
array=(1 2 3 array123 bistu)

##普通for循环
for i in  ${array[*]}; do
	#statements
	echo $i
done

##C语言的for循环
for (( i = 0; i < ${#array[*]}; i++ )); do
	#statements
	echo ${array[i]}
done

##while循环


6.面试题实战及案例
6.1打印下面这句话中字母数不大于6的单词
I am oldboy teacher welcome to oldboy training class

C语言的for循环打印
方法1:
string=(I am oldboy teacher welcome to oldboy training class)
for (( i = 0; i < ${#string[*]}; i++ ))
do
	if [ ${#string[i]} -gt 6 ]; then
		#statements
		sleep 1
	else
		echo "${string[i]}"
	fi
done

方法2:
string=(I am oldboy teacher welcome to oldboy training class)
for (( i = 0; i < ${#string[*]}; i++ ))
do
	if [ `expr length ${string[i]}` -gt 6 ]; then
		#statements
		sleep 1
	else
		echo "${string[i]}"
	fi
done

方法3:
string=(I am oldboy teacher welcome to oldboy training class)
for (( i = 0; i < ${#string[*]}; i++ ))
do
	if [ `echo ${string[i]} | wc -L` -gt 6 ]; then
		#statements
		echo ""
	else
		echo "${string[i]}"
	fi
done

方法4:
string=(I am oldboy teacher welcome to oldboy training class)
for (( i = 0; i < ${#string[*]}; i++ ))
do
	if [ `echo ${string[i]} | awk ‘{print length()}‘` -gt 6 ]; then
		#statements
		echo ""
	else
		echo "${string[i]}"
	fi
done

使用for循环列举值列表法
for word in I am oldboy teacher welcome to oldboy training class
do
	sth //wc -L awk的length()函数 expr的length函数  字符串本身的${#word} 均可进行判断
done


awk循环
[[email protected] ~]# echo $char | awk ‘{for(i=1;i<=NF;i++) if(length($i)<=6) print $i}‘


6.2批量检查多个网站地址是否正常
url=(
	http://blog.oldboy.com
	http://www.baidu.com
	http://192.168.142.180
	http://127.0.0.1
)
方法1:
urls=(
        http://blog.oldboy.com
        http://www.baidu.com
        http://192.168.142.180
        http://127.0.0.1
)
function check_url(){
        for url in ${urls[*]}; do
                #statements
                #echo $url
                curl -s -o /dev/null $url
                RETRVAL=$?
                if [[ $RETRVAL -eq 0  ]]; then
                        #statements
                        echo "$url is ok"
                else
                        echo "$url is not ok"
                fi
        done
}
function main(){
        while true; do
                #statements
                check_url
                sleep 10
        done

}
main


如何调试脚本:
1)echo
2)sh -x ***.sh

  

以上是关于shell数组的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

shell 脚本 片段

vue2.0 代码功能片段

web代码片段