我正在尝试遍历一个数组并为数组中的每个值附加一个前缀。简化版代码:
#!/bin/sh
databases=( db1 db2 db3 )
for i in live_${databases[@]} stage_${databases[@]}
do
....
done
但是,它只是将前缀添加到数组中的第一个值 - 它循环的值是:
live_db1 db2 db3 stage_db1 db2 db3
有什么想法?感谢。
答案 0 :(得分:15)
databases=( db1 db2 db3 )
for i in ${databases[@]/#/live_} ${databases[@]/#/stage_}
do
....
done
答案 1 :(得分:1)
尝试这样的事情:
#!/bin/sh
databases="db1 db2 db3"
for i in $databases
do
x="live_$i"
y="stage_$i"
echo "$x $y"
done
答案 2 :(得分:1)
for i in $( for d in ${databases[@]}; do echo "live_$d stage_$d"; done )
do
....
done
答案 3 :(得分:0)
只需添加 John Kugelman 的答案。详情请见:
bash手册页 - >参数扩展 - >模式替换
... 如果模式以#开头,则必须在开头处匹配 扩展参数值。 ...