Bash中,數組變量的賦值有兩種方法:
(1) name = (value1 ... valuen) 此時下標從0開始
(2) name[index] = value
下面以一個簡單的腳本來說明,腳本內容如下:
#!/bin/bash
#定義數組
A=(a b c def)
#把數組按字符串顯示輸出
echo ${A[@]}
#屏幕顯示:a b c def
#數組的長度表示${#A[*]}
len=${#A[*]}
echo ${#A[*]}
#屏幕顯示:4
#改變數組元素的值
A[3]='vivian'
echo ${A[*]}
#屏幕顯示:a b c vivian
#循環輸出數組元素
i=0
while [ $i -lt $len ]
do
echo ${A[$i]}
let i++
done
#屏幕輸出:
# a
# b
# c
# vivian
#循環輸出數組元素的另一種寫法,注意,在條件中,引用變量一定要用雙引號 ,否則報錯
for (( j=0; j<"$len"; j=j+1 ))
do
echo ${A[$j]}
done
#循環輸出數組元素的另一種寫法,注意,${A[*]}不能寫成$A ,$A默認是第一個元素,
如果A="a b c ded",就可以寫$A
for value in ${A[*]}
do
echo $value
done
ps:
在a=(1 2 3 4)和a="1 2 3 4"中,表示所有元素的話,前者只能用${a[*]}或者${a[@]}來表示
而後者還可以用${a[*]}或者${a[@]}或者$a來表示,在a=(1 2 3 4)中$a只是表示第一個元素1
假如a="1 2 3 4"
array=($a)就相當於a=(1 2 3 4),不信你可以試試echo ${array[@]}
上面的例子還可以改寫成以下內容:
for value in $A
do
echo $value
done