我这样做:
VAL=$(wc -l < file_with_5_lines)
for i in {1..${VAL}}; do echo $i; done
期待这个结果:
1
2
3
4
5
而不是我得到这个:
{1..5}
修改
此问题被标记为重复,但我认为其他问题的接受答案无效。建议的解决方案是:
VAL=$(wc -l < file_with_5_lines)
for i in {1..$((VAL))}; do
echo $i
done
继续给我这个结果:
{1..5}
而不是:
1
2
3
4
5
答案 0 :(得分:2)
支持扩展在参数扩展之前完成,这就是为什么我们在{...}
构造内部不能有变量的原因。使用常规for循环,以便您不依赖于seq
之类的外部命令:
for ((i = 1; i <= VAL; i++)); do
# your code here
done
答案 1 :(得分:1)
尝试以下代码,
VAL=$(wc -l < file_with_5_lines)
for i in `seq ${VAL}`
do
echo $i
done
答案 2 :(得分:0)
VAL=$(wc -l < file_with_5_lines)
for i in $(seq $VAL);do echo $i;done