【问题标题】:Detect a commented line in a linux bash script from another linux script using grep使用 grep 从另一个 linux 脚本中检测 linux bash 脚本中的注释行
【发布时间】:2015-05-06 12:11:46
【问题描述】:

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

【问题讨论】:

  • 一种可能性是grep "^/usr/bin/do-some-test",即测试该行是否以此开头,而不是其他。
  • 顺便说一句,当你说,remark,你想说的是,comment...

标签: linux string bash grep


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 2020-09-23
      • 2013-02-05
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      相关资源
      最近更新 更多