在bash中-e选项在错误后停止执行,并且grep命令返回非零状态,以防它找不到它正在寻找的模式。 我想在if语句中使用grep,比如
#/bin/bash -e
if [[ `grep str /usr/lib/file.txt` -eq 0 ]]
//do something
fi
如果我使用$?获取最后一个命令的语句,然后执行在最后一个命令后停止,因为grep返回非零状态。 必须有一些方法来实现这一点,需要帮助找到它
答案 0 :(得分:3)
就地进行:
#/bin/bash -e
if grep -q str /usr/lib/file.txt; then
echo "Found str"
else
echo "Didn't find str"
fi
请注意-q
的{{1}}(--quiet
)选项,我们只对退出状态感兴趣。
答案 1 :(得分:0)
两件事。
您错过了; then
if [[ `grep str /usr/lib/file.txt` -eq 0 ]]; then
//do something
echo Yes
fi
当我在bash shell中尝试它并且str
存在时,我在屏幕上看到了匹配的行。你可能不想要那个。使用wc
选项将grep导入-l
(字数)(仅返回行数):
if [[ `grep str /usr/lib/file.txt | wc -l` -eq 0 ]]; then
//do something
echo Yes
fi