使用grep从另一个linux脚本中检测linux bash脚本中的注释行

时间:2015-05-06 12:11:47

标签: linux string bash grep

我在linux(script A)中有一个脚本,它通常包含以下命令:

/usr/bin/do-some-test

我正在创建一个bash脚本(script B),以便始终检查(script A)是否包含上述命令。

所以我用过这个:

if grep /usr/bin/do-some-test "script A"; then
    echo "All good"
else
    echo "Script A file is not updated!"

问题是,如果我在(scriptA)中注释命令,就像这样:

#/usr/bin/do-some-test

grep搜索的结果仍为TRUE

我如何搜索#/usr/bin/do-some-test,但要确保它在开头没有#

2 个答案:

答案 0 :(得分:3)

您可以在正则表达式中使用锚点

if grep -Eq '^ */usr/bin/do-some-test' "script A"; then
   echo "All good"
else
   echo "Script A file is not updated!"
fi

答案 1 :(得分:0)

为了捕捉前面的标签,应该写出看起来很有趣的

grep -E '^['$'\t'' ]*command' 

由两个单引号字符串构成,中间带有$'\t'(并且在结束括号之前包含一个空格),或者更好地使用意图明确的Posix字符类:

grep -E '^[[:space:]]*command'