我正在尝试使用for循环创建一个新数组
Images="alpine ubuntu centos"
Image_tags="$(for i in $Images; do
r_madoori1/$i
done)"
echo $Image_tags
我在等
Image_tags="r_madoori1/alpine r_madoori1/ubuntu r_madoori1/centos"
相反,我得到了低于错误
./shell.sh: line 7: r_madoori1/alpine: No such file or directory
./shell.sh: line 7: r_madoori1/ubuntu: No such file or directory
./shell.sh: line 7: r_madoori1/centos: No such file or directory
无需使用任何循环,即可在bash
:中执行此操作
Images="alpine ubuntu centos"
Image_tags="r_madoori1/${Images// / r_madoori1/}"
echo "$Image_tags"
输出:
r_madoori1/alpine r_madoori1/ubuntu r_madoori1/centos
for
循环重复命令;它并没有建立一个值列表。你可以写一些类似的东西
# OK
Image_tags="$(for i in $Images; do
echo -n "r_madoori1/$i "
done)"
但是从中执行多个赋值会更简单,而不是在单个赋值中嵌入一个循环。
# Better
for i in $Images; do
Image_tags="$Image_tags r_madoori1/$i"
done
但是,如果您使用的是bash
,则应该使用实数组,而不是空格分隔的字符串。
# Best
Images=(alpine ubuntu centos)
for i in "${Images[@]}"; do
Image_tags+=( "r_maddori1/$i" )
done
或者更简洁地说
Images=(alpine ubuntu centos)
Image_tags=("${Images[@]/#/r_madoori1/}")