检查shell脚本中命令的输出,并在需要时中止

时间:2014-01-22 01:07:35

标签: shell

所以这就是要点:我有一个执行各种命令的脚本。

其中一个命令返回一些关于所执行操作的日志记录。如果出现错误,我想拦截此日志记录并停止脚本。由于脚本中的以下操作与此操作的成功相关,因此在此阶段遇到错误时运行整个脚本是没有意义的。

此命令通过ssh在远程计算机上运行;一旦ssh命令退出并且控件返回脚本,我们的想法就是停止脚本

是否有一种简单的方法来检查在shell脚本中运行的命令的输出?我可以将输出重定向到一个文件,并解析它,但这似乎在脚本上添加了许多额外的工作;而我只有在ssh命令中有错误时才需要触发退出。

你有什么建议来完成这项任务?

1 个答案:

答案 0 :(得分:2)

如果出现错误时命令以错误代码退出,您可以执行以下操作:

if ! ssh somehost mycommand; then
  echo "There was an error."
  exit 1
fi

如果它没有提供有用的错误代码,那么您可能需要 使用类似的方法检查输出:

if ssh somehost somecommand 2>&1 | grep error_message; then
  echo "There was an error."
  exit 1
fi

这些都是非常常见的技术,其中一种或两种都可能 适用于您的需求。