当我要查找的值不匹配时,我试图返回自定义退出代码(并随后显示错误消息)。我发现了以下先前的stackoverflow问题-Return code of sed for no match,我曾用它来开发以下脚本。
update_value() {
local before="$1"
local after="$2"
sed -i "/$before/!{q100}; {s/$before/$after/}" "$3"
local sed_exit_code="$?"
if [[ "$sed_exit_code" -eq 100 ]]; then
echo "ERROR: There is no $before value in $3"
exit 1
elif [[ "$sed_exit_code" -ne 0 ]]; then
echo "Error updating $before value in $3"
exit 1
else
echo "Successfully updated $before to $after in $3"
fi
}
update_value x y file.txt
我正在运行
CentOS Linux release 7.7.1908 (Core)
,具有sed版本(sed (GNU sed) 4.2.2
),尽管该文件中肯定存在x值,但它返回的是第一个错误(ERROR: There is no x value in file.txt
)。
因此,sed错误地返回了退出代码100。我在这里想念什么/做错什么了吗?