質問: 終了コードの比較:単項演算子が必要です .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