Shell在编程方面比Windows批处理强大不少,不管是在循环、运算。
bash支持一维数组(不支持多维数组),而且没有限定数组的大小。相似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标能够是整数或算术表达式,其值应大于或等于0。编程
在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的通常形式为:
array_name=(value1 ... valuen)
例如:数组
array_name=(value0 value1 value2 value3)
或者bash
array_name=(
value0
value1
value2
value3
)
还能够单独定义数组的各个份量:spa
array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
能够不使用连续的下标,并且下标的范围没有限制。code
读取数组元素值的通常格式是:
${array_name[index]}
例如:blog
valuen=${array_name[2]}
#!/bin/bash NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Index: ${NAME[0]}" echo "Second Index: ${NAME[1]}"
运行脚本,输出:字符串
$ bash array.sh First Index: Zara Second Index: Qadir
使用@ 或 * 能够获取数组中的全部元素,例如:class
${array_name[*]}
${array_name[@]}
#!/bin/bash NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Index: ${NAME[*]}" echo "Second Index: ${NAME[@]}"
运行结果:循环
$ bash array2.sh First Index: Zara Qadir Mahnaz Ayan Daisy Second Index: Zara Qadir Mahnaz Ayan Daisy
获取数组长度的方法与获取字符串长度的方法相同,例如:方法
#!/bin/bash NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Index: ${NAME[*]}" echo "Second Index: ${NAME[@]}" #取得数组元素的个数 length=${#NAME[@]} echo -e $length "\n" #或者 length=${#NAME[*]} echo -e $length "\n" #取得数组单个元素的长度 lengthn=${#NAME[0]} echo -e $lengthn "\n"
运行结果:
First Index: Zara Qadir Mahnaz Ayan Daisy Second Index: Zara Qadir Mahnaz Ayan Daisy 5 5 4