Linux / Ubuntu设置:非法选项-o pipefail

时间:2019-01-05 19:36:19

标签: linux shell ubuntu set ubuntu-16.04

下面提到的代码行一直在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

2 个答案:

答案 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