.txt
ファイルにgitコミットのリストがあり、コミットを繰り返し処理したいと思います。 COMMIT_ID
ごとに、終了コードが0
または1
であるgit
コマンドを使用してチェックします。
結果に応じて、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"
$()
は、終了コードではなく、指定されたコマンドの出力に置き換えられます。終了コードを使用するには、コマンドをif
で直接使用します。
if git merge-base --is-ancestor "$COMMIT_ID" HEAD; then