【问题标题】:How to let unix grep command to abort if pattern match fails如果模式匹配失败,如何让 unix grep 命令中止
【发布时间】:2019-03-16 06:42:02
【问题描述】:

我在一个脚本中有多个 unix 命令。如果匹配,“cat file.txt | grep pattern”将依次执行下一个命令。否则,如果不匹配,该命令应该中止。任何实现此目的的单行命令都会有所帮助。

【问题讨论】:

标签: unix grep


【解决方案1】:

如果您使用的是 bash 或 sh,您可以像这样设置选项 errexitset -o errexit

如果你这样做了,那么这行(和任何其他行)如果失败就会中止你的脚本:

grep pattern file.txt

或者,您可以像这样简单地使用||

grep pattern file.txt || exit 1

或者,更详细地说,使用if

if ! grep pattern file.txt; then
    exit 1
fi

【讨论】:

    【解决方案2】:

    将你的 grep 命令放入 if else 循环中,如果字符串不匹配使用 exit 0 命令。

    【讨论】:

      【解决方案3】:
      cat file.txt | grep pattern
      

      可以写成

      grep pattern file.txt
      

      您可以使用&&跳过失败的下一行

      grep pattern file.txt && 
         echo "I am the next line"
      

      或退出

      grep pattern file.txt || { echo "Grep found nothing"; exit 1; }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多