如何使代码作为一般函数在bash中使用整个脚本:
if [[ $? = 0 ]]; then
echo "success " >> $log
else echo "failed" >> $log
fi
答案 0 :(得分:2)
您可以编写一个命令执行包装器:
function exec_cmd {
$@
if [[ $? = 0 ]]; then
echo "success " >> $log
else
echo "failed" >> $log
fi
}
然后使用以下函数在脚本中执行命令:
exec_cmd command1 arg1 arg2 ...
exec_cmd command2 arg1 arg2 ...
...
答案 1 :(得分:0)
如果您不想包装原始呼叫,可以使用显式呼叫,如下所示
function check_success {
if [[ $? = 0 ]]; then
echo "success " >> $log
else echo "failed" >> $log
fi
}
ls && check_success
ls non-existant
check_success
答案 2 :(得分:0)
没有真正干净的方法来做到这一点。这很干净,可能还不错?
PS4='($?)[$LINENO]'
exec 2>>"$log"
这将显示每个命令在日志中运行,每个条目将以上一个命令的退出代码开始...
答案 3 :(得分:0)
您可以将其放在.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
是一个更合适的地方)
甚至可以获得更多的幻想,并使用colours查看结果。
我猜你也可以玩最后执行的命令: