Shell编程中的数组定义、遍历


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[@]})"



你可能感兴趣的:(浏览器,cgi,debugging,variables,服务器软件)