使用sed返回自定义退出代码

时间:2019-11-15 00:43:48

标签: bash sed

当我要查找的值不匹配时,我试图返回自定义退出代码(并随后显示错误消息)。我发现了以下先前的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。我在这里想念什么/做错什么了吗?

0 个答案:

没有答案