每条命令后,if success:显示自定义消息,if error:显示错误,并发送到文件



bash脚本执行几个命令。在每个命令之后,如何:

  • 如果成功:在控制台中显示自定义消息并将其附加到日志文件
  • if error:在控制台中显示错误信息,将错误信息附加到日志文件中并恢复整个脚本

where is I am:

log_file="log.txt"
output() {
  echo $@
  echo $@ 2>&1 >> $log_file;
  if [ $@ -eq 0 ]
  then
    exit 1
  fi
}

,然后在每条命令后:

if [ $? -eq 0 ] 
then 
  output "Custom message"
else
  output $?
fi

您可以创建一个"run"函数来限制重复:

run()
{
  message="$1"
  shift
  eval "$*"
  if [ $? -eq 0 ]; then
    output "$message"
  else
    output $?
  fi
 }

并在每个命令前加上:

 run "message" "command"

命令只有在包含shell元表达式时才需要加引号

这是一种实现方法;在每个要跟踪的命令之后,添加这一行:

rc="$?"; if [ "$rc" -eq 0 ]; then echo "Custom message" 2>&1 | tee -a /folder/log; else echo "$rc" 2>&1 | tee -a /folder/log; fi

以下命令将为您提供上次运行命令的退出状态。

$ ?

e。G让我们假设你执行了"ls"命令,之后如果你执行以下

echo $ ?

您将看到退出状态为0。这意味着成功。退出状态非零表示失败。

您可以在shell脚本中的某些if else中使用它,并根据退出值执行您需要执行的操作。

最新更新