bash for loop:一系列数字

sod*_*ate 31 bash for-loop

我在.sh文件中有以下代码:

for num in {1..10}
do
  echo $num
done
Run Code Online (Sandbox Code Playgroud)

哪个应该从1到10打印数字.但是,这是我得到的:

{1..10}
Run Code Online (Sandbox Code Playgroud)

此外,使用类似C的sytax也不起作用:

for ((i=1; i<=10; i++))
Run Code Online (Sandbox Code Playgroud)

这给我一个错误:

Syntax error: Bad for loop variable
Run Code Online (Sandbox Code Playgroud)

我拥有的bash版本是4.2.25.

Pra*_*eep 50

代码应如下(注意shebang说bash,不是sh):

 #!/bin/bash
 echo "Bash version ${BASH_VERSION}..."
 for i in {0..10..1}
    do
       echo "Welcome $i times"
 done
Run Code Online (Sandbox Code Playgroud)

来源http://www.cyberciti.biz/faq/bash-for-loop/

  • `.`是不必要的. (5认同)
  • 请注意,当在“{start..end..step}”中使用变量时,这*不起作用*,例如“{0..$end..1}”。对于 bash 5.0.17 `end=10; 对于 {0..$end..1} 中的 i;回显 $i; done` 产生输出 `{0..10..1}`。 (5认同)
  • "..1"在MacOSX Bash中不解析. (4认同)
  • ".1"步长在bash 4.0+中添加 (4认同)
  • 这个:(注意shebang说的是bash,而不是sh) (3认同)
  • @balu请注意,问题不是关于使用变量,所以答案是可行的。如果您需要变量,那么您可以使用 C 风格版本:`for (( $i = $start; $i &lt;= $end; $i += $incr )) ...`。这样可行。 (3认同)
  • 我喜欢 `for i in {01..10}` 会给你填充数字 ... `01` ... `02` .... (3认同)
  • 这对我不起作用。~/u/tmp&gt; cat try #!/bin/bash # for integer in {1..10..1} do echo "integer is $integer" done ~/u/tmp&gt; 。 /try 整数是 {1..10..1} ~/u/tmp&gt; (2认同)