bash関数のオプションパラメータ


12

こんな感じのSVNブランチを素早く作る機能があります

function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; }

アドレスなどを調べてコピーして貼り付ける必要なしに、新しいブランチをすばやく作成するために使用します。ただし、メッセージ(-mオプション)の場合は、3番目のパラメーターを指定するとメッセージとして使用され、それ以外の場合は「$ 2の開発ブランチ」の「デフォルト」メッセージが使用されるようにしたいと思います。これがどのように行われるかを誰かが説明できますか?

回答:


20
function svcp() { 
    msg=${3:-dev branch for $2}
    svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "$msg";
}

変数msg$3$3が空でない場合に設定されますdev branch for $2。それ以外の場合は、デフォルト値のに設定されます。 $msg次に、の引数として使用されます-m


3

bashのmanページから:

 ${parameter:-word}
          Use Default Values.  If parameter is unset or null, the expansion of word is substituted.  Otherwise, the value of parameter is substituted.

あなたの場合、あなたは使うでしょう

$関数svcp(){
  $ 2のdef_msg = "devブランチ"
  echo svn copy "repoaddress / branch / $ 1.0.x" "repoaddress / branch / dev / $ 2" -m \ "$ {3:-$ def_msg} \";
}

$ svcp 2刺激的な新しいもの
svnコピーrepoaddress / branch / 2.0.x repoaddress / branch / dev / exciting_new_stuff -m "刺激的なブランチの開発ブランチ"

$ svcp 2刺激_新しい_もの "世界支配のための秘密のレシピ"
svn copy repoaddress / branch / 2.0.x repoaddress / branch / dev / exciting_new_stuff -m "世界支配のための秘密のレシピ"
ドル

生成されたsvnコマンドに満足したら、echoコマンドを削除できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.