Bash 脚本与命令行

Bash 脚本与命令行

我已经开始研究 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以获得您想要的行为

相关内容