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



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值