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
这会重复很多......
答案 0 :(得分:1)
您可以创建"运行"限制重复的功能:
run()
{
message="$1"
shift
eval "$*"
if [ $? -eq 0 ]; then
output "$message"
else
output $?
fi
}
只需在每个命令前加上:
run "message" "command"
如果命令包含shell元表达式,则只需要引用该命令。
答案 1 :(得分:0)
以下命令将为您提供上次运行命令的退出状态。
$?
例如,假设您执行了" ls"命令,之后如果执行以下
echo $?
您将看到退出状态为0.这意味着成功。非零退出状态表示失败。
您可以在shell脚本中的某种if else中使用它,并根据退出值执行您需要执行的操作。
答案 2 :(得分:0)
这是实现这一目标的一种方式;在每个要跟踪的命令之后,添加以下行:
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