2011-09-29 41 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

根据您的回复编辑。 –