2015-05-06 26 views
2

检测在Linux的bash脚本中的注释行从另一个Linux的剧本我都在linux(script A)的脚本,通常包含以下命令:用grep

/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但确保它在开始时没有#

+0

一种可能性是'grep“^/usr/bin/do-some-test”',即测试该行以此开始而没有别的。 –

+3

顺便说一句,当你说'备注'时,你想说'评论'...... – anishsane

+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' 
这是由两个单引号字符串构建了一个

(并且在右括号之前包含空格)或更好地使用其意图明确的Posix字符类:

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