我在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
,但要确保它在开头没有#
?
答案 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'