shell 数组

系统 1595 0

http://blog.sina.com.cn/s/blog_7429b9c80100usiq.html

1. 数组的定义

 
Bash 中还可以使用数组变量 , 其赋值有两种 :
(1) name = (value1 ... valuen) 
此时下标从 0 开始,也可以: names=([2]=alice [0]=hatter [1]=duchess)
(2) name[index] = value

shell中数组的下标默认是从0开始的

举例如下:
 
array=(a b c d e)
注意只能使用空格分隔,不能够使用其它符号分隔。举例如下:
 
=========
#!/bin/sh
array1=(1,2,3,4,5,678,9)
array2=(1 2 3 4 5 678 9)
length1=${#array1[@]}
length2=${#array2[@]}
for ((i=0; i<$length1; i++));
do
      echo array1[$i]=${array1[$i]}
done
for ((i=0; i<$length2; i++));
do
      echo array2[$i]=${array2[$i]}
done
==========
将上述脚本保存为t.sh并执行后可见结果如下:
[root@localhost vietnam]# sh t.sh 
array1[0]=1,2,3,4,5,678,9
array2[0]=1
array2[1]=2
array2[2]=3
array2[3]=4
array2[4]=5
array2[5]=678
array2[6]=9
 
此时发现array1只有一个元素,而array2则有7个元素,因此需要特别注意。
 
如果遇到数据元素很多,需要换行时可以使用如下方法定义:
SERVER=("192.168.1.1" \
"192.168.1.2" \
"192.168.1.3" \
"192.168.1.4" \
"192.168.1.5" \
"192.168.1.6" \
"192.168.1.7")
注意括号与第一个和最后一个元素必须紧邻,不能有空格。
 
 
2. 数组的遍历
 
2.1 
====
#!/bin/sh
array=(1 2 3 4 5 678 9)
length=${#array[@]}
for ((i=0; i<$length; i++));
do
      echo array[$i]=${array[$i]}
done
====
 
2.2
===
#!/bin/sh
array=(1 2 3 4 5 678 9)
for _id_ in ${array[@]};
do
      echo $_id_
done
===
 
3. 其它注意事项
3.1 注意"${array[*]}"与${array[*]}的区别, 在加引号时, * 则作为一个整体的字符串返回
=====
#!/bin/sh
array=(1 2 3 4 5 678 9)
for _id_ in "${array[*]}";
       do
              echo \"*\" array $_id_
       done
 
for _id_ in ${array[*]};
       do
              echo \* array $_id_
       done
===
[root@localhost vietnam]# sh t.sh
"*" array 1 2 3 4 5 678 9
* array 1
* array 2
* array 3
* array 4
* array 5
* array 678
* array 9
 
===
array=(1 2 3 4 5 678 9)
 
显示目前有值的数组序号:――bash 3.0以后才支持。
echo ${!array[@]}
0 1 2 3 4 5 6
 
取得数组元素的个数
echo ${#array[@]}
7
 
显示第3个元素里面的元素的个数:
echo ${#array[5]}
3
echo ${#array[1]}
1

shell 数组


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论