下面提到的代码行一直在Ubuntu 16.04发行版上对我有用,但是突然选项名pipefail
是非法选项:
set -eu -o pipefail
返回:
设置:非法选项-o pipefail
为什么会这样?我在全新安装的系统上运行该命令,并将其作为Shell脚本的一部分运行。代码放在开头:
myscript.sh:
1 #!/bin/bash
2 set -eu -o pipefail
3 ...
脚本以sudo运行:
sudo sh ./myscript.sh
答案 0 :(得分:3)
我在从 zsh
运行脚本时遇到了同样的错误,并且脚本以 不正确 shebang 开头。
错误,在 !
之后缺少 #
:
#/bin/bash
rest-of-the-script
正确:
#!/bin/bash
rest-of-the-script
答案 1 :(得分:1)
您正在运行bin/sh
,在Ubuntu上,它是指向/bin/dash
的符号链接,但是pipefail
是一种bashism。
使脚本可执行:
chmod +x myscript.sh
,然后按如下所示运行脚本:
sudo ./myscript.sh