Bash-如何在范围括号中进行算术扩展?

时间:2020-04-23 23:31:14

标签: bash shell

我想这样做: for i in {1.."$((2**3))"}; do echo "$i"; done

但是这会输出{1..8},我要执行,而不是输出。 怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用seq代替范围括号:

for i in $(seq 1 $((2**3))); do echo "$i"; done

答案 1 :(得分:1)

您不能像在bash中那样进行操作,大括号扩展发生在变量之前。 可以使用c样式的for循环。

for ((i = 1; i <= 2**3; i++)); do printf '%d ' "$i"; done

...或者,如果您真的想进行括号扩展,请使用eval,不建议使用,但这是唯一的方法...

eval echo {1..$((2**3))}
相关问题