参数从外部传递给bash脚本,并在bash文件中读取。看起来如下:
#following is the point from where the argument is passed to config.sh
controller.vm.provision :shell, path: 'shell/config.sh', keep_color: true, privileged: false, :args => ip
在config.sh里面读取参数。论证" ip"有点像跟随:
ip = "10.12.153.26" "10.12.153.25" "10.12.153.24"
现在我想迭代bash中的上述参数。所以做如下:
array=($1) //please note $1="10.12.153.26" "10.12.153.25" "10.12.153.24"
for i in ${array[@]}
do
echo $i //it is iterated only once and output is "10.12.153.26" "10.12.153.25" "10.12.153.24"
done
所以输出我只得到一次并且是完整的参数,但是我希望它逐个显示,所以我甚至可以单独使用单个值用于其他目的。那么,请建议我怎么能有这个?
答案 0 :(得分:1)
如果要在空格上拆分值,可以这样做:
set -- $1
for i; do
echo $i
done
如果$i
的值为"10.12.153.26" "10.12.153.25" "10.12.153.24"
,
然后这将输出:
"10.12.153.26"
"10.12.153.25"
"10.12.153.24"
要删除双引号,可以使用参数扩展:
set -- $1
for i; do
echo ${i//\"/}
done