Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用花括号的Bash for循环的意外输出_Linux_Bash - Fatal编程技术网

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