下面的循环给了我5喜:具有可变
for i in {1..5} ;
do
echo hi $i
done
但是当我做变量下面,它不会:
num=5
for i in {1..$num} ;
echo hihi $i
done
,我试图把一些“”或或'',但它仍然不给我5嗨,请给我一些建议。结果返回值是{1 .. $ num},所以请告诉我如何为变量设置适当的情况。谢谢。
下面的循环给了我5喜:具有可变
for i in {1..5} ;
do
echo hi $i
done
但是当我做变量下面,它不会:
num=5
for i in {1..$num} ;
echo hihi $i
done
,我试图把一些“”或或'',但它仍然不给我5嗨,请给我一些建议。结果返回值是{1 .. $ num},所以请告诉我如何为变量设置适当的情况。谢谢。
问题是括号展开前参数扩展发生了,所以,你希望它是变量也不会被展开。
使用适当C
风格for-loop
,
for ((i=1; i<=num; i++)); do
从man bash
页,下EXPANSION
部分已拆分成词之后的命令行上执行
扩展
扩展。有七种扩展执行。
扩展的顺序是:
brace expansion
;tilde expansion
,parameter and variable expansion
,arithmetic expansion
,和command substitution
(在左到右的方式进行);word splitting
;和pathname expansion
。
变量扩展发生在花括号之后,所以你不能在里面使用它们。如果你想使用变量,你可以使用seq。即'对于我$(seq 1 $ num)' – 123
不要使用'seq';它比C风格的'for'循环更不如标准,也没有标准。 – chepner