【发布时间】:2014-02-19 09:59:18
【问题描述】:
我有一个(长)Bash 脚本,它执行以下操作:
set -o nounset
set -o errexit
set -o pipefail
echo -e "foo \n bar" | grep "baz" | tr -d ' '
echo "here"
脚本失败且没有错误消息,因为 grep 命令返回错误 1 而不打印任何错误消息。
如何使我的脚本健壮?
【问题讨论】:
-
来自
grep手册页:“退出状态 grep 实用程序以下列值之一退出:0 选择了一行或多行。1 未选择行。>1 发生错误。 "因此,退出值为 1 仅表示未找到字符串(如预期的那样),而不是发生错误。 -
如果在 grep 中找不到字符串,您期望什么输出?
-
grep如果未找到匹配项,则不会写入任何错误。 -
Bentoy13:我希望没有输出,但我希望我的脚本将这种情况视为错误,并妥善管理。
-
@user744629
set -e?