1、数组的初始化
arr=(1 2 3 4)
arr=(`ls/opt/`)
arr
arr[1]="a"
arr[7103]="bbb"
arr[7105]="ddd"
2、获取数组的length(数组中有几个元素)
${arr[@]}
3、向数组中添加成员
arr[1]="item_1"
arr[2]="item_2"
4、取出数组中的一个成员
${arr[2]}
5、遍历数组
for var in ${arr[@]};
do
echo -n ${var}
echo -n ' '
done
for i in "${!arr[@]}"; do
printf "%s\t%s\n" "$i" "${arr[$i]}"
done
i=0
while [ $ i-lt ${#arr[@]} ];
do
echo ${arr[$i]}
let i++
done
6、判断一个指定的字符串是否在该数组中:
if echo ${arr[@]} | grep -w "${nest_id}" &>/dev/null;
then
:
else
echo -n "nest_id["${nest_id} is not exist, please configure it.
exit 1
fi
7、向函数传递数组
由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。在函数中,读取字符串,并且分为数组,达到目的。
fun(){
local_arr=(`echo $1 |cut -d " " --output-delimiter=" "-f1-`)
local_n_arr=${#_arr[@]}
for((i=0;i<$_n_arr;i++));
do
elem=${_arr[$i]}
echo"$i : $elem"
done;
}
arr=(abc)
fun"$(echo ${arr[@]})"