我已经开始研究 bash 脚本。我刚刚发现执行命令行和在脚本中执行相同命令之间存在差异。特别是命令行是:
for a in {2..10..2};do echo "My number is:$a";done
其产生以下预期的输出:
My number is:2
My number is:4
My number is:6
My number is:8
My number is:10
另一方面,脚本test.sh
如下:
#!/bin/sh
for a in {2..10..2};do echo "My number is:$a";done
因此,当我这样做时:
./test.sh
我得到以下输出:
My number is:{2..10..2}
我原本期望这两种方法是等效的。
为什么这两种方法不同,以及如何正确使用循环/花括号以获得与命令行相同的输出?
答案1
您的脚本不一定是bash
脚本,因为/bin/sh
链接到不同发行版中的不同 shell。如果它链接到/bin/bash
,则所有 POSIX 的 bash 扩展都将被禁用。将您的 shebang 更改为/bin/bash
以获得您想要的行为