Bash for循环:一系列数字

63

我有一个 .sh 文件中的以下代码:

for num in {1..10}
do
  echo $num
done

应该输出从1到10的数字。但是,我得到了以下内容:

{1..10}

另外,使用 C 语言的语法也不起作用:

for ((i=1; i<=10; i++))

这会导致错误:

Syntax error: Bad for loop variable

我使用的Bash版本是4.2.25。


你的代码在4.1.5版本中对我来说运行良好。 - Jon Kiparsky
1
您还可以使用seq打印一系列数字。尝试输入“seq 1 5”。 - devnull
5
如果以 sh 的身份运行 bash,它将不能正常工作;如果以 bash 的身份运行 bash,它将正常工作。 - Jonathan Leffler
C语法需要在for循环条件之前先执行let i=0。 - Ken Ingram
1个回答

103
代码应该如下(请注意shebang表示为bash,而不是sh):
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..10}
do
    echo "Welcome $i times"
done
你可以使用{0..10..1},如果你想从0开始。
来源:http://www.cyberciti.biz/faq/bash-for-loop/

6
这个脚本:(注意 shebang 写的是 bash,不是 sh) - Jon Kiparsky
12
"..1" 是不必要的。 - Keith Thompson
6
在 MacOSX Bash 中无法解析"..1"。 - Rondo
11
在Bash 4.0+中新增了步长为1。 - JGurtz
4
请注意,在{start..end..step}中使用变量时,例如{0..$end..1}是无效的。在Bash 5.0.17中,end=10; for i in {0..$end..1}; do echo $i; done将输出{0..10..1} - balu
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接