linux - 在每个命令之后,如果成功 : show a custom message, 如果错误 : show error, 并发送到文件

标签 linux bash

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

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

这是我的位置:

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()
{
  message="$1"
  shift
  eval "$*"
  if [ $? -eq 0 ]; then
    output "$message"
  else
    output $?
  fi
 }

只需在每个命令前添加:

 run "message" "command"

只有包含 shell 元表达式的命令才需要被引用。

关于linux - 在每个命令之后,如果成功 : show a custom message, 如果错误 : show error, 并发送到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40622699/

相关文章:

linux - 管理 Shell 任务

linux - 为什么从 "find: paths must precede expression"返回多个结果时会触发错误 "find"

linux - 在 Linux 中的 awk 命令中使用 tr 命令

bash - 当文件在 bash 中具有不同前缀时,如何按文件名中的日期排序?

bash - 如何用 0 替换不存在的值?

linux - 启动多个 ffmpeg 实例

linux - 如何查看程序的执行时间?

java - Raspberry Pi 上的 Jave 段错误

linux - VT 在 BIOS 中设置但未在操作系统上显示 vmx CPU 标志

bash - 链接两个进程 Bash