2015-01-08 153 views
1

我正在清理腳本的輸出。例如:Shell腳本錯誤處理

rm -f ./file 

沒有這樣的文件或目錄

我要實現一些錯誤檢查該命令,相當於一個try/catch聲明。換句話說,如果命令失敗,我想捕捉錯誤。

+5

'RM -f blahblahblah'沒有我的系統上打印錯誤消息。對你有幫助嗎?什麼系統? –

+0

只是一個提示:搜索'set -e','trap' ... – anishsane

回答

3

爲什麼不使用一個簡單的腳本achive相同的行爲?

file=$1 
if [ ! -f $file ]; then 
    echo "File not found!" 
else 
    rm -f $file 
fi 

當您運行它時,腳本會告訴您給定的文件是否不存在。

您也可以在echo命令後面使用2>&1重定向到stderrstdout。您還可以在if語句的末尾添加exit 1,因爲退出狀態1通常表示該命令未成功執行。

這不會像你打算的那樣工作,但在bash中這是檢測錯誤的最接近的方法。

2

使用set -e或者您可以使用&&||

4

的Python:

try: 
    os.remove('./file') 
    champagne_for_everybody 
except: 
    throw_myself_in_the_river 

殼牌:

if rm ./file 
then 
    champagne_for_everybody 
else 
    throw_myself_in_the_river 
fi 

注:

  • 不要使用-f - POSIX rm忽略使用-f時丟失的文件。
  • 如果可以避免,請勿使用shell。 Python和其他現代語言有更復雜的錯誤處理內置的。