如何解决我的 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