Bash for 循环范围为 {#..#}

Sha*_*ke0 20 command-line bash

{#..#} 生成一系列数字或字符,类似于 Python 中的 range()。如果我echo {1..5}在命令行中执行命令,我有:

1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

相反,以下 bash 脚本无法按预期工作。

for i in {1..3};
do
    echo "Iteration $i"
done
Run Code Online (Sandbox Code Playgroud)

将打印:

Iteration {1..3}
Run Code Online (Sandbox Code Playgroud)

为什么?
*我可以使用,seq但我读到它已经过时了(http://www.cyberciti.biz/faq/bash-for-loop/

zip*_*zap 26

我试过你的代码(复制粘贴到终端中)它产生了与你发布的不同的结果:

for i in {1..3};
do
    echo "Iteration $i"
done
#---OUTPUT BELOW---
Iteration 1
Iteration 2
Iteration 3
Run Code Online (Sandbox Code Playgroud)

我使用 Linux Mint 12 Lisa(源自 Ubuntu)和 bash 版本4.2.10(1)-release

  • 你是对的!我以为 sh 和 bash 是一回事.. (3认同)
  • 不,bash 和 sh 是完全不同的... bash 比 sh 更强大,它是在 sh 的肩膀上做出的 :) 虽然它们都有很好的兼容性,但它们也有不同之处 (2认同)