比较退出代码:预期一元运算符

比较退出代码:预期一元运算符

我在文件中有一个 git 提交列表.txt,我想迭代这些提交。对于每个COMMIT_ID我想使用git退出代码为0或 的命令检查它们1

取决于我想要的结果echo truefalse

但运行脚本时,我收到此错误:

line 5: [: 0: unary operator expected

脚本如下:

#!/usr/bin/env bash
input="./commits.txt"
while IFS= read -r COMMIT_ID
do
  if [ 0 -eq $(git merge-base --is-ancestor $COMMIT_ID HEAD) ]; 
    then 
      echo "true"; 
    else 
      echo "false"; 
    fi
done < "$input"

答案1

$()替换为给定命令的输出,而不是其退出代码。要使用退出代码,请直接使用以下命令if

if git merge-base --is-ancestor "$COMMIT_ID" HEAD; then

相关内容