我使用类的结构在bash中运行嵌套的for循环。我已经写好了脚本,并且可以工作,但是我不明白为什么当我已经声明我想要K1-5的时候,为什么在结构-K之后的花括号中需要字符(在本例中是粗体的)K?这就是我的资料-
for K in {1..5}
do
for run in {1..3}
do
echo "K = ${K}; run = ${run}"
structure -K **${K}** -o K_${K}_run_${run}.txt
done
done发布于 2016-11-08 12:32:53
在您的脚本中,变量扩展需要用${}分隔的唯一位置是:
K_${K}_run_${run}.txt因为:
[A-Za-z0-9_]在K_${K}_run_${run}.txt中
-${K}需要${},因为后面跟着_${run}不需要严格地分隔,因为后面跟着.,这不是有效的变量构成字符发布于 2016-11-08 12:33:31
外壳变量$K和程序选项-K是两个不同的东西。您可以使用任何变量名
for m in {1..5}
do
for run in {1..3}
do
echo "K = ${m}; run = ${run}"
structure -K ${m} -o K_${m}_run_${run}.txt
done
done程序不会从同名的外壳变量中推断缺少的-K选项的值。
for K in {1..5}
do
for run in {1..3}
do
echo "K = ${K}; run = ${run}"
# Wrong: does not assume -K ${K}
structure -o K_${K}_run_${run}.txt
done
donehttps://stackoverflow.com/questions/40478972
复制相似问题