我如何知道 set -e 选项是否已启用?

Car*_*rós 11 linux bash command-line

我正在编写一个 shell 函数,它将从许多不同的地方调用,我想忽略函数内部发生的所有错误,禁用(可能启用)set -eshell 选项,执行set +e.

问题是我不知道是否设置了该选项,所以我不知道是否真的需要禁用它,更重要的是,如果我需要在最后再次设置它。

那么,我怎么知道它是否已设置?有没有办法忽略 shell 函数中所有命令的错误,-e如果设置了则忽略shell 选项?

小智 19

查看 $- 的值,如果它包含一个 'e',则设置了 '-e' 选项。此变量包含所有设置选项的列表。这在 bash 手册页中有描述。

  • 您可以使用类似`[[ $- =~ e ]]` 的内容进行检查。 (6认同)