如何使代碼波紋管作爲一般的功能,可用於整個腳本在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 {
[email protected]
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
有沒有真正乾淨的方式來做到這一點。這很乾淨,可能夠好嗎?
PS4='($?)[$LINENO]'
exec 2>>"$log"
,將顯示在日誌中的每個命令運行,每個條目將與前一個命令的退出代碼開始...
你可以把這個.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。
我想你也可以用獲得的最後一個執行的命令發揮:
你的意思是每一個命令之後自動執行呢? – anubhava
相關並且非常有用:[編寫一個運行命令並記錄其退出代碼的封裝函數的最佳方法](http://stackoverflow.com/a/372120/1983854) – fedorqui