私はシェル スクリプト、またはより具体的には ZSH 関数を書いています。さまざまな簡単なコマンドを使用して、git リポジトリなどの状態を確認しています。
ただし、特定のコマンドで多くの問題が発生しています。別の stackoverflow の投稿で、git リポジトリのルート フォルダーを出力するコマンドを見つけました。
git rev-parse --show-top-level
私の実際のzshインスタンスで、実行すると
$(git rev-parse --show-top-level)
適切な値が返され、すべて問題ありません。ただし、スクリプト内のこのアプローチはうまく機能していません。少しコンテキストを示します。
[ $(git status &>/dev/null) $? -eq "0" ] && {
git_name=$("git rev-parse --show-top-level")
echo $(eval $git_name)
}
今、私はあなたのことを知りませんが、これはこれを行うには間違った方法のようです (最初の行ではありません; 私はそれで大丈夫です)。これの出力はおおよそ次のとおりです。
command not found: git rev-parse --show-top-level
これを書くべきだと思われる方法は次のとおりです。
[ $(git status &>/dev/null) $? -eq "0" ] && {
git_name=$(git rev-parse --show-top-level)
echo $git_name
}
これの出力は次のとおりです。
--show-top-level
終了ステータスは 0 です。
私の質問は、なぜこれらのどちらも機能しないのですか?これを実装する正しい方法は何でしょうか? 私の推測では、スペースの後に二重破線の引数があることと関係があり、最後の長い引数はコマンド自体として扱われています (少なくとも 2 番目の例では) が、それは私の直感の範囲です。
助けてください!