如何将下面的代码作为通用函数在 bash 中使用整个脚本:
if [[ $? = 0 ]]; then
echo "success " >> $log
else echo "failed" >> $log
fi
如何将下面的代码作为通用函数在 bash 中使用整个脚本:
if [[ $? = 0 ]]; then
echo "success " >> $log
else echo "failed" >> $log
fi
您可以为命令执行编写一个包装器:
function exec_cmd {
$@
if [[ $? = 0 ]]; then
echo "success " >> $log
else
echo "failed" >> $log
fi
}
然后使用以下函数在脚本中执行命令:
exec_cmd command1 arg1 arg2 ...
exec_cmd command2 arg1 arg2 ...
...
如果您不想包装原始调用,则可以使用显式调用,如下所示
function check_success {
if [[ $? = 0 ]]; then
echo "success " >> $log
else echo "failed" >> $log
fi
}
ls && check_success
ls non-existant
check_success
您可以将其放入.bashrc
并随时调用
function log_status { [ $? == 0 ] && echo success>>/tmp/status || echo fail>>/tmp/status }
如果您在每个命令之后都需要它,您可以让提示写入日志(注意原始 PS1 值已附加)。
export PS1="\$([ \$? == 0 ] && echo success>>/tmp/status || echo fail>>/tmp/status)$PS1"
(我没有这方面的经验,也许PROMPT_COMMAND
是一个更合适的地方)
或者甚至变得更花哨,并用颜色查看结果。
我想您也可以尝试获取最后执行的命令:
没有真正干净的方法可以做到这一点。这很干净,可能足够好?
PS4='($?)[$LINENO]'
exec 2>>"$log"
这将显示日志中运行的每个命令,并且每个条目都将从上一个命令的退出代码开始......