オプションに従って拡張するようにbashでコマンドを拡張する方法は?

オプションに従って拡張するようにbashでコマンドを拡張する方法は?

私は読み取り専用と見なされるべき多くのコンテンツを含むgitリポジトリで作業を始めました。だから新しいブランチを投げるたびに:

git checkout -b newBranch

次のコマンドに従う必要があります。

git update-index --assume-unchanged LARGE_READONLY_DIRECTORY

私はこれが私の新しいbashスキルを試してみるのに最適な機会だと思ったので、シェルで私がしなければならないことは最初の行だけで、最初の行を実行してから2番目の行を実行しましたが、覚えていません。私はしません)。

私がしたいのは、.bashrcに最初の引数が "checkout"で、2番目の引数が "-b"であるかどうかを確認する関数があるようです。最初の確認は簡単ですが、-bがあるかどうかを確認する方法がわかりません。

git() {
    if [[ $1 == 'checkout' ]] && [[$2 == '-b']]; 
            then echo 'yep!';
    fi;

    command git "$@";
}

こうすると文句が出る[[-b: command not found。おそらくこれが議論ではなく選択であるという事実がここで重要でしょう。後続のコマンドを実行できるように、このパラメータが存在するかどうかを確認する方法を教えてください。

ベストアンサー1

[[との間にはスペースが必要です$2

bashは構文ではないため、[[組み込みコマンド(正確にはキーワード)です。 Bashは[[endを含むすべての引数で実行されます]][[andの間にスペースがない場合、$2bashはキーワードを表示せずに代わりに次のものを表示[[します[[-b。詳細についてはを参照してください。$2-b[[-bhelp [[

同じ理由で、最後の前にスペースが必要です]]

固定コードは次のとおりです。

git() {
    if [[ $1 == 'checkout' ]] && [[ $2 == '-b' ]]; 
            then echo 'yep!';
    fi;

    command git "$@";
}

また見てくださいバッシュトラップそしてバッシュFAQ。 IMOはbashスクリプトを学ぶための最良の方法...またはあまり多くのことをしなくてもbashスクリプトを学ぶための最良の方法です。

おすすめ記事