菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
189
0

shell(8)循环

原创
05/13 14:22
阅读数 45778
  1. 数组定义法1:
     
    arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!!
    
    数组定义法2:
     
    array
     
    array[0]="a"
     
    array[1]="b"
     
    array[2]="c"
     
     
     
    获取数组的length(数组中有几个元素):
     
    ${#array[@]}
     
     
     
    遍历(For循环法):
     
    for var in ${arr[@]};
     
    do
     
    echo $var
     
    done
     
     
    遍历(带数组下标):
     
    for i in "${!arr[@]}";
     
    do
     
    printf "%s\t%s\n" "$i" "${arr[$i]}"
     
    done
     
     
     
    遍历(While循环法):
     
    i=0
     
    while [ $i -lt ${#array[@]} ]
     
    do
     
    echo ${ array[$i] }
     
    let i++
     
    done
     
     
     
    向函数传递数组:
     
    由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。
     
    翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。
     
    这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。
     
    在函数中,读取字符串,并且分为数组,达到目的。
     
     
     
    fun() {
     
    local _arr=(`echo $1 | cut -d " " --output-delimiter=" " -f 1-`)
     
    local _n_arr=${#_arr[@]}
     
    for((i=0;i<$_n_arr;i++));
     
    do
     
    elem=${_arr[$i]}
     
    echo "$i : $elem"
     
    done;
     
    }
     
     
    array=(a b c)
     
    fun "$(echo ${array[@]})"
     

     

发表评论

0/200
189 点赞
0 评论
收藏