我将一些命令存储在一个数组中.Bellow是一个简化的例子
#!/bin/bash
test_arr=()
x="mural.png"
for q in 10 12 14; do
for i in 4 6 8; do
test_arr+=("$x_$q_$i")
done
done
echo "${test_arr[@]}"
unset test_arr
for q in 10 12 14; do
for i in 4 6 8; do
test_arr+=("$x"_"$q"_"$i")
done
done
echo "${test_arr[@]}"
输出:
4 6 8 4 6 8 4 6 8
4 6 8 4 6 8 4 6 8 test_stack.png_10_4 test_stack.png_10_6 test_stack.png_10_8 test_stack.png_12_4 test_stack.png_12_6 test_stack.png_12_8 test_stack.png_14_4 test_stack.png_14_6 test_stack.png_14_8
以下给出了正确的输出
#!/bin/bash
test_arr=()
x="mural.png"
#for q in 10 12 14; do
# for i in 4 6 8; do
# test_arr+=("$x_$q_$i")
# done
#done
#echo "${test_arr[@]}"
unset test_arr
for q in 10 12 14; do
for i in 4 6 8; do
test_arr+=("$x"_"$q"_"$i")
done
done
echo "${test_arr[@]}"
输出:
mural.png_10_4 mural.png_10_6 mural.png_10_8 mural.png_12_4 mural.png_12_6 mural.png_12_8 mural.png_14_4 mural.png_14_6 mural.png_14_8
使用"$x"_"$q"_"$i"
而不是"$x_$q_$i"
时,为什么变量会扩展?
答案 0 :(得分:2)
" _"是变量名的有效字符。
"${x}_${q}_$i"
答案 1 :(得分:2)
你不需要循环; bash
可以为您进行扩展
$ echo mural.png_{10,12,14}_{4,6,8}
mural.png_10_4 mural.png_10_6 mural.png_10_8 mural....