因工作需要,需要使用shell开发一些小工具,当使用数组作为函数参数时,发现只能传递数组的第一个元素,数组后面的元素不能传递到函数内。
#!/bin/bash
function showArr(){
arr=$1
for i in ${arr[*]}; do
echo $i
done
}
regions=(GZ SH BJ)
showArr $regions
exit 0
把代码保存为test.sh后执行,只输出了第一个元素。
./test.sh
GZ
$1表示获取函数
一、参数和共享引用:
In [56]: def changer(a,b):
....: a=2
....: b[0]='spam'
....:
In [57]: X=1
In [59]: L=[1,2]
In [60]: changer(X,L)
In [61]: X,L
Out[61]: (1, ['spam', 2])
函数参数是赋值得来,在调用时通过变量实现共享对象,函数中对可变对象 参数的在远处修能够影响调用者。
避免可变参数修改:
In [67]: X=1
I