通过 shopt 命令解决较低的 Bash 脚本问题

通过 shopt 命令解决较低的 Bash 脚本问题

如何解决我的 Ubuntu 中的 Bash 版本问题?

我正在尝试在我的 Ubuntu VPN 终端中执行一个 shell 脚本。

我的 Bash 版本是:

GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)

我的外壳脚本是:

#!/bin/bash
...
...

我已经授予它如下权限:

chmod +x _myscript.sh
ex -sc $'%s/\r$//e|x' _myscript.sh
sh _myscript.sh

我收到此错误:

syntax error in conditional expression: unexpected token `(‘

经过研究,我发现这是因为 Bash 版本较低。

我发现的解决方案是在 Bash 声明后添加此行:

[code language="bash"] shopt -s extglob [/code] 

我需要知道在脚本的哪个位置需要给出上述行。

我刚刚#!/bin/bash在脚本中尝试过,但仍然出现相同的错误。

答案1

如果你使用 Bourne shell ( sh) 运行 Bash 脚本,shebang ( #!/bin/bash) 将被忽略,因此sh将运行脚本,而不是bash。你需要像这样运行脚本:

bash _myscript.sh

相关内容