종료 코드 비교: 단항 연산자가 필요합니다.

종료 코드 비교: 단항 연산자가 필요합니다.

파일에 git 커밋 목록이 있고 .txt이 커밋을 반복하고 싶습니다. 각 명령에 대해 종료 코드를 COMMIT_ID사용하여 확인하고 싶은 것은 또는 입니다 .git01

내가 원하는 결과에 따라 달라 집니다 echo true.false

하지만 스크립트를 실행할 때 다음 오류가 발생합니다.

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

관련 정보