line=$(grep "# rvm line" ~/.bashrc)
if [ ! -n "$line" ]; then
echo "found"
else
echo "not found"
fi
我的引號在第一行有什麼問題?
編輯:問題是set -o errexit
,我在我的腳本中使用。我認爲-n
被視爲錯誤,退出以下過程。我如何克服這一點,保持錯誤檢查? (替代-n也可以工作)。
line=$(grep "# rvm line" ~/.bashrc)
if [ ! -n "$line" ]; then
echo "found"
else
echo "not found"
fi
我的引號在第一行有什麼問題?
編輯:問題是set -o errexit
,我在我的腳本中使用。我認爲-n
被視爲錯誤,退出以下過程。我如何克服這一點,保持錯誤檢查? (替代-n也可以工作)。
如果你不打算使用$line
任何超過測試否則,如果是空的或沒有,那麼你不妨這樣做:
if grep -q '# rvm line' ~/.bashrc; then
echo "found"
else
echo "not found"
fi
這很完美。它更短,並且在與'set -o errexit'一起使用時不會退出腳本 – octosquidopus
沒有
沒有什麼明顯錯誤的報價?你沒有得到預期的結果?
好的,你的if條件是錯誤的 - 如果它的目的是檢查grep語句返回了什麼。我會把它作爲你自己弄清楚的線索。古德勒克
嗯..你是對的。它本身工作,但是當它在我的腳本中時,它就會鎖定。 – octosquidopus
根據您的回覆編輯。 –
錯誤的那種紅色的色調?將shebang更改爲'#!/ bin/bash -x'或使用'set -vx'並檢查輸出... –
您正在使用'-n',意思是如果字符串不爲空則爲True,然後您否定使用'!' –