shell 数组
shell 也支持数组,就是写法跟平时的开发语言不太一样,反正我是觉得挺别扭。
声明数组
数组数据使用一对括号( var )
包起来,就能成为数组。
1 | arr=(10 20 30 40) |
结果:
10
20
打印数组
打印数组的话要注意,直接打印数组,只会打印出第一条数数据,必须加上*
或 #
,才能全部输出。
1 | !/bin/bash |
结果:
one
one
two
one two three 4
one two three 4
tom
tom jack
数组遍历
直接遍历
1.使用 ${数组名[@]}
、${数组名[#]}
均可以获得所有元素
2.带数组下标的遍历,当需要使用到数组的下标时,可以使用${!数组名[@]}
3.while循环:根据元素的个数遍历,但对于稀疏数组,可能会丢失数据
1 | days=(one two three 4) |
通过下标遍历,符号 !
用 for in 来遍历,取下标一般用 !。
使用 ! 时,下面例子中的 i 的值为下标。
如果要拿到值,在for中取的是${i}的值,两种写法都可以,自行选择。
1 | !/bin/bash |
入参转数组
如果想在执行脚本的时候把所有参数当成一个数组使用,也可以这样:
1 | test1=`${@}` |
执行一下
sh test.sh 11 22 33 44
结果:
11 22 33 44
22 33 44
函数间数组传递
这个就比较绕了,绕在哪呢,就在传递没问题,接收的话,还是要用( )
来接收,否则就只能接收到数组的第一个元素,因为在传入时,数组的所有元素被当成一个个参数传入,通过$1 $2 ...也可以获取到。
1 | !/bin/bash |
结果:
原始数组的值为: 10 20 30 40 50
test1 result:
函数接收到的参数列表为: 10 20 30 40 50
新的数组的值为: 10 20 30 40 50
10
20
30
40
50
test2 result:
10 20
总结
shell 的数组,函数间数组传递需要注意其它的大同小异。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 人话翻译机!
评论