我在 bash 脚本中有这个:
(
set -o pipefail
echo "foobar" | bash
set +o pipefail
)
我是否需要重置 pipelinefail 设置,或者我可以省略该行吗?换句话说,子shell中的pipefail设置是否会影响父shell?
所以这意味着我假设:
(
set -o pipefail
echo "foobar" | bash
)
真的和上面没有什么不同吗?
答案1
引用手册页:
对子 shell 环境所做的更改不会影响 shell 的执行环境。
您可以轻松测试您的案例:
$ set +o pipefail
$ (set -o pipefail)
$ shopt -o pipefail
pipefail off