在if语句中使用grep

时间:2014-06-16 15:48:52

标签: shell if-statement grep

我必须查看文件是否具有工作England。我用过grep 这就是我到目前为止所拥有的

#!/bin/bash
cd ~/Desktop/htmlFiles/
echo "Starting"
if `grep -inE "england" maps.html` ; then 
  echo "yaaaay"
fi

但输出是:

Starting
./trial.sh: line 4: 22:: command not found

为什么不返回yaaaay

2 个答案:

答案 0 :(得分:2)

#!/bin/bash
cd ~/Desktop/htmlFiles/
echo "Starting"
if  grep -qinE "england" maps.html  ; then 
    echo "yaaaay"
fi

给我所需的输出。这是一个好习惯吗?

答案 1 :(得分:1)

反引号替换将返回命令的输出。在这种情况下,您输出的行号包含grep的输出,后跟匹配的行。因此,第22行似乎有一些东西,但shell尝试执行命令22:,然后失败。

您作为后续答案发布的变体将起作用,因为grep在成功匹配时返回0,但如果匹配失败则返回1。