sai*_*tam 12 linux shell ubuntu set ubuntu-16.04
下面提到的代码行一直在 Ubuntu 16.04 发行版上为我工作,但突然间 option-namepipefail是一个非法选项:
set -eu -o pipefail
Run Code Online (Sandbox Code Playgroud)
返回:
设置:非法选项 -o pipefail
为什么会发生这种情况?我在全新安装的系统上运行该命令并作为 shell 脚本的一部分。代码放在开头:
我的脚本.sh:
1 #!/bin/bash
2 set -eu -o pipefail
3 ...
Run Code Online (Sandbox Code Playgroud)
该脚本作为 sudo 运行:
sudo sh ./myscript.sh
Run Code Online (Sandbox Code Playgroud)
l0b*_*0b0 20
你正在运行bin/sh,在 Ubuntu 上它是一个指向 的符号链接/bin/dash,但它pipefail是一种bashism。
使脚本可执行:
chmod +x myscript.sh
Run Code Online (Sandbox Code Playgroud)
然后按如下方式运行脚本:
sudo ./myscript.sh
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 15
我在运行脚本时遇到了同样的错误,zsh并且脚本以不正确的shebang 开头。
错误,!之后丢失#:
#/bin/bash
rest-of-the-script
Run Code Online (Sandbox Code Playgroud)
正确的:
#!/bin/bash
rest-of-the-script
Run Code Online (Sandbox Code Playgroud)