数组的值也可以写入变量。
例如:
A=1
my_array=($A B C D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"
输出为:
第一个元素为: 1第二个元素为: B第三个元素为: c第四个元素为: D
看数组的时候,觉得遍历数组用的比较多,所以自己试着写了写遍历,同时试了一下在SHELL脚本中的变量自增几个写法,在就新手学习的时候注意一下 [ 和 $ 之间要有空格,没有空格运行会报错,新手可能不太注意这一点,我开始就没注意到~~~~
示例如下:
#!/bin/bash
my_arry=(a b "c","d" abc)
echo "-------FOR循环遍历输出数组--------"
for i in ${my_arry[@]};
do
echo $i
done
echo "-------::::WHILE循环输出 使用 let i++ 自增:::::---------"
j=0
while [ $j -lt ${#my_arry[@]} ]
do
echo ${my_arry[$j]}
let j++
done
echo "--------:::WHILE循环输出 使用 let "n++ "自增: 多了双引号,其实不用也可以:::---------"
n=0
while [ $n -lt ${#my_arry[@]} ]
do
echo ${my_arry[$n]}
let "n++"
done
echo "---------::::WHILE循环输出 使用 let m+=1 自增,这种写法其他编程中也常用::::----------"
m=0
while [ $m -lt ${#my_arry[@]} ]
do
echo ${my_arry[$m]}
let m+=1
done
echo "-------::WHILE循环输出 使用 a=$[$a+1] 自增,个人觉得这种写法比较麻烦::::----------"
a=0
while [ $a -lt ${#my_arry[@]} ]
do
echo ${my_arry[$a]}
a=$[$a+1]
done
字符串转数组:
#!/bin/bash
words="aaa bbb ccc"
#字符串转数组,空格是分隔符
array=(${words// / })
#打印数组最后一个成员
echo ${array[${#array[*]}-1]}
#打印数组长度
echo ${#array[*]}
#字符串不转换为数组,在循环实现以空格为分隔符打印每个成员
for word in ${words}; do
echo ${word}
done
运行结果:
ccc3aaabbbccc
使用 while 循环来遍历数组,对于顺序填满的数组来说,这个没有问题,然而,有些人会忽视另外一种情况,例如:
my_array[0]=1 my_array[1]=2 my_array[20]=100
如果使用查询数组长度,这时候数组的长度不是 21,也一样是 3,如果用数组长度来控制输出的方法,这时,输出是:
a=1 b=2 c=100 d=99 array=($a $b $c $d) echo ${array[*]} array[20]=verilog echo -e "use while && let ++ print every element" i=0 while [ $i -lt ${#array[@]} ] do echo ${array[$i]} let i++ done echo "*******************"
运行结果是:
use while && let ++ print every element 1 2 100 99 *******************