如何在shell中使用grep并设置-e选项

时间:2016-12-07 04:49:02

标签: linux bash shell

在bash中-e选项在错误后停止执行,并且grep命令返回非零状态,以防它找不到它正在寻找的模式。 我想在if语句中使用grep,比如

#/bin/bash -e
if [[ `grep str /usr/lib/file.txt` -eq 0 ]]
  //do something
fi

如果我使用$?获取最后一个命令的语句,然后执行在最后一个命令后停止,因为grep返回非零状态。 必须有一些方法来实现这一点,需要帮助找到它

2 个答案:

答案 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)

两件事。

  1. 您错过了; then

    if [[ `grep str /usr/lib/file.txt` -eq 0 ]]; then
        //do something
        echo Yes
    fi
    
  2. 当我在bash shell中尝试它并且str存在时,我在屏幕上看到了匹配的行。你可能不想要那个。使用wc选项将grep导入-l(字数)(仅返回行数):

    if [[ `grep str /usr/lib/file.txt | wc -l` -eq 0 ]]; then
       //do something
       echo Yes 
    fi