代码之家  ›  专栏  ›  技术社区  ›  quillbreaker

如果输出没有特定的行数,则运行unix shell命令

  •  1
  • quillbreaker  · 技术社区  · 15 年前

    我有一个Unix命令序列,它类似于:

    command1 | command2 | command3 | wc -l
    

    现在我有了行数,如果行数不等于某个特定的数字,我想做点什么(运行一个没有输入的特定命令)。我的shell脚本非常不可靠(自从我做了很多Unix工作之后,大概10年或更长时间了),所以我不知道如何将这种条件添加到命令序列中。有人知道吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   eduffy    15 年前

    有点丑…但这是可行的。

    #  test $(seq 10 | wc -l) -eq 10 && echo "there's 10"
    there's 10
    #  test $(seq 11 | wc -l) -eq 10 && echo "there's 10"
    

    什么都没有 echo 第二种情况下的Ed

        2
  •  5
  •   paxdiablo    15 年前

    您需要捕获 wc 命令与使用 if 如果不等于所需行数,则运行另一个命令,例如:

    count=$(command1 | command2 | command3 | wc -l)
    if [[ $count -ne 19 ]] ; then
        command4
    fi
    
        3
  •  3
  •   Bombe    15 年前
    numberOfLines=$(command1 | command2 | command3 | wc -l)
    if [ "${numberOfLines}" == "7" ]; then
        echo "Hooray."
    fi