Linux 使用花括号的Bash for循环的意外输出
我希望下面的循环可以打印数字:Linux 使用花括号的Bash for循环的意外输出,linux,bash,Linux,Bash,我希望下面的循环可以打印数字: #!/bin/bash # Basic range in for loop for value in {1..5} do echo $value done 但我在一行中得到以下输出: {1..5} 我做错了什么?{1..5}不一定在任何情况下都能像您期望的那样工作。一个更好的方法(至少在我看来)是使用seq: for value in $(seq 1 5) do echo $value done seq基本上是每个Unix中都包含的一个简单程序
#!/bin/bash
# Basic range in for loop
for value in {1..5}
do
echo $value
done
但我在一行中得到以下输出:
{1..5}
我做错了什么?
{1..5}
不一定在任何情况下都能像您期望的那样工作。一个更好的方法(至少在我看来)是使用seq
:
for value in $(seq 1 5)
do
echo $value
done
seq
基本上是每个Unix中都包含的一个简单程序,它生成由两个参数指定的数字序列。很可能是您错误地运行了脚本,例如:sh script.sh
。您是如何运行脚本的?是的,sh script.sh这是错误的方式吗?是的,您的脚本是用bash
编写的,但您正在以sh
脚本的形式运行它,这是一种不同的脚本语言。。。有关详细信息,请参见我发布的链接……对于bash
:使用seq
,因为这太过分了。这是在浪费一个过程,为了一些内置的东西。仅当其中一个(1或5)是变量时才使用seq
。对于sh
:没有比seq
更简单的选项了@Sebastian谢谢你的建议。我知道seq,但我不确定为什么花括号不起作用。对于bash,更好的做法是((I=1;I