您的位置:首页 > 运维架构 > Shell

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

2016-10-30 14:36 204 查看
数组定义:

1arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!!
数组定义法2:

1

2

3

4

array

array[0]="a"

array[1]="b"

array[2]="c"

获取数组的length(数组中有几个元素):

1${#array[@]}
遍历(For循环法):

1

2

3

4

for
var
in
${
arr[@]
};

do

    echo
$var

done

遍历(带数组下标):

123for i in "${!arr[@]}"; do     printf "%s\t%s\n" "$i" "${arr[$i]}"done
遍历(While循环法):

1

2

3

4

5

6

i=0

while
[
$i
-lt
${
#array[@]
} ]

do

    echo
${
array[$i]
}

    let
i++

done

向函数传递数组:

由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。

翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。

这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。

在函数中,读取字符串,并且分为数组,达到目的。

1

2

3

4

5

6

7

8

9

10

11

12

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: