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中使用它,并根据退出值执行您需要执行的操作。