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

如何在仍然隐藏命令的同时读取命令的输出?

  •  1
  • GrayedFox  · 技术社区  · 6 年前

    我有一个自定义Git命令,该命令有条件地删除具有远程连接的本地分支:

    #!/usr/bin/env bash
    
    GONE_BRANCHES=$(git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}')
    
    if [ -z "$GONE_BRANCHES" ]; then
      echo "Could not find any local branches that have a gone remote"
      exit 0
    fi
    
    if [ "$1" = "-f" ]; then
      echo "$GONE_BRANCHES" | xargs git branch -D
    else
      echo "$GONE_BRANCHES" | xargs git branch -d 2>/dev/null
      if [ $? -eq 1 ]; then
        FAILED_TO_DELETE="true"
      fi
    fi
    
    if [ "$FAILED_TO_DELETE" = "true" ]; then
      echo "error: Some local branches are not fully merged."
      echo "If you are sure you want to delete them, run 'git-glean -f'"
    fi
    

    this question 我试图建立一个解决方案,它仍然输出 git branch -d ,但如果无法删除错误消息,则接受(隐藏)错误消息并回显自定义错误消息。

    问题是,条件错误消息从未触发(对于那些无法使用删除的分支) ).

    1 回复  |  直到 6 年前
        1
  •  3
  •   blue112    6 年前

    xargs 手册页指出:


    xargs退出时的状态如下:
    如果成功,则为0
    123如果任何命令调用以状态1-125退出

    Xargs不会随着 1"

     echo "$GONE_BRANCHES" | xargs git branch -d 2>/dev/null
     if [ $? -ne 0 ]; then