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,然后您否定使用'!' –