2011-09-29 70 views
0
line=$(grep "# rvm line" ~/.bashrc) 

if [ ! -n "$line" ]; then 
    echo "found" 
else 
    echo "not found" 
fi 

我的引號在第一行有什麼問題?

編輯:問題是set -o errexit,我在我的腳本中使用。我認爲-n被視爲錯誤,退出以下過程。我如何克服這一點,保持錯誤檢查? (替代-n也可以工作)。

+0

錯誤的那種紅色的色調?將shebang更改爲'#!/ bin/bash -x'或使用'set -vx'並檢查輸出... –

+0

您正在使用'-n',意思是如果字符串不爲空則爲True,然後您否定使用'!' –

回答

3

如果你不打算使用$line任何超過測試否則,如果是空的或沒有,那麼你不妨這樣做:

if grep -q '# rvm line' ~/.bashrc; then 
    echo "found" 
else 
    echo "not found" 
fi 
+0

這很完美。它更短,並且在與'set -o errexit'一起使用時不會退出腳本 – octosquidopus

1

沒有

沒有什麼明顯錯誤的報價?你沒有得到預期的結果?

好的,你的if條件是錯誤的 - 如果它的目的是檢查grep語句返回了什麼。我會把它作爲你自己弄清楚的線索。古德勒克

+0

嗯..你是對的。它本身工作,但是當它在我的腳本中時,它就會鎖定。 – octosquidopus

+0

根據您的回覆編輯。 –