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

Ale*_*ler 3 bash git shell-script test exit-status

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

根据我想要的结果echo truefalse.

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

line 5: [: 0: unary operator expected
Run Code Online (Sandbox Code Playgroud)

脚本如下:

#!/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"
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 7

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

if git merge-base --is-ancestor "$COMMIT_ID" HEAD; then
Run Code Online (Sandbox Code Playgroud)