我開始在我的bash腳本中使用set -e, ,並發現短格式的條件表達式會中斷腳本執行。當使用set時,bash單行條件失敗-e
例如,下面的線應該檢查是$ var不爲空:
[ -z "$var" ] && die "result is empty"
但導致從腳本無聲退出時是$ var具有非零長度。
我曾經在許多地方,這種形式的條件表達式...
我應該怎麼做,使之正常運行?用「if」構造重寫所有內容(這會很醜陋)?或放棄「set -e」?
編輯:大家都在問代碼。這裏充滿[無]工作示例:
#!/bin/bash
set -e
function check_me()
{
ws="smth"
[ -z "$ws" ] && echo " fail" && exit 1
}
echo "checking wrong thing"
check_me
echo "check finished"
我希望它之前和之後的函數調用打印兩相呼應。 但它在check_me函數中靜靜失敗。輸出是:
checking wrong thing
你在哪裏使用'set -e'?顯示完整的代碼。 – 2012-03-27 08:46:53
你所描述的不應該發生(我不能再現)。這是專門列出的情況下shell不會退出手冊頁。 – Mat 2012-03-27 08:49:46
這可能是在這裏有意義的用法。我已經添加了一個示例腳本(完整)。 – LiMar 2012-03-27 09:09:09