2012-04-29 6 views
2

私はシェルスクリプトを書いていますが、もっと具体的には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 

私がこれを書いべきであると思われる方法は次のとおりです。

--show-top-level 

と終了ステータスは次のとおりです。

[ $(git status &>/dev/null) $? -eq "0" ] && { 
    git_name=$(git rev-parse --show-top-level) 
    echo $git_name 
} 

これの出力があります0

私の質問は、これらのどちらも機能しないのですが、これを実装する正しい方法は何でしょうか?私の推測では、スペースの後に二重破棄された引数があり、最後の長い引数が(少なくとも2番目の例では)コマンドそのものとして扱われているということがありますが、それは私の直感の程度です。

ヘルプありがとうございました! git rev-parse周りに二重引用符は不要であり、引数が--show-toplevel、ない--show-top-levelあるべき

[ $(git status &>/dev/null) $? -eq "0" ] && { 
    git_name=$(git rev-parse --show-toplevel) 
    echo $(eval $git_name) 
} 

答えて

2

はこれを試してみてください。

+0

素晴らしい!どうもありがとうございました! –

関連する問題