Glab

shell编程:for数组

最佳实践

1、定义数组时, ==元素按行书写==
2、如果遇到带==有空格的元素,用引号引起来==
3、for循环中使用"${list[@]}",会将带引号的行看成一个元素
4、==不同的shell的处理方式不同==,这里只考虑了bash

从三个方面考虑
list=(
13580561176      # 这是注释
"123     456"    # 分为带引号 和不带引号两种
888      999
)

echo ${#list[@]} ==> 4
echo ${#list[@]} ==> 4
echo ${#list[*]} ==> 4
echo ${#list[*]} ==> 4

for m in  ${list[@]};  do echo $m; echo '***********'; done # 5
echo '------------------------'
for m in "${list[@]}"; do echo $m; echo '***********'; done  # 数组定义元素不带引号:5个元素; 带引号:4个元素
echo '------------------------'
for m in  ${list[*]};  do echo $m; echo '***********'; done # 恒为5个元素
echo '------------------------'
for m in "${list[*]}"; do echo $m; echo '***********'; done  # 恒为1个元素
[root@dockersvr ~]# list=(
> 13580561176      # 这是注释
> "123     456"    # 分为带引号 和不带引号两种
> )
[root@dockersvr ~]# 
[root@dockersvr ~]# echo ${list[@]}
13580561176 123 456  # 3个元素
[root@dockersvr ~]# echo "${list[@]}"
13580561176 123     456    # 两个元素(制表符依然存在)
[root@dockersvr ~]# echo ${list[*]}  
13580561176 123 456   # 3个元素
[root@dockersvr ~]# echo "${list[*]}"
13580561176 123     456
[root@dockersvr ~]# for i in "${list[*]}";   #被当成了一个元素
> do
> echo $i
> done
13580561176 123 456
[root@dockersvr ~]# for i in 13580561176 "123     456"; do echo $i; done 
13580561176
123 456
[root@dockersvr ~]# for i in 13580561176 123     456; do echo $i; done  
13580561176
123
456
[root@dockersvr ~]# 

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »