Paramètres facultatifs dans la fonction bash

12

J'ai une fonction pour créer rapidement une nouvelle branche SVN qui ressemble à

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

Ce que j'utilise pour créer rapidement une nouvelle branche sans avoir à chercher et copier-coller les adresses et d'autres choses. Cependant, pour le message (option -m), j'aimerais l'avoir pour que si je fournis un troisième paramètre, celui-ci soit utilisé comme message, sinon le message "par défaut" de "dev branch for $ 2" est utilisé. Quelqu'un peut-il expliquer comment cela se fait?

Madden
la source

Réponses:

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

la variable msgest définie sur $3if $3n'est pas vide, sinon elle est définie sur la valeur par défaut de dev branch for $2. $msgest ensuite utilisé comme argument pour -m.

cas
la source
3

depuis la page de manuel de bash:

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

dans votre cas, vous utiliseriez

$ function svcp () {
  def_msg = "branche de dev pour $ 2"
  echo svn copy "repoaddress / branch / $ 1.0.x" "repoaddress / branch / dev / $ 2" -m \ "$ {3: - $ def_msg} \";
}

$ svcp 2 excitant_new_stuff
svn copy repoaddress / branch / 2.0.x repoaddress / branch / dev / excitant_new_stuff -m "branche de dev pour excitant_new_stuff"

$ svcp 2 excitant_new_stuff "recette secrète pour la domination du monde"
svn copy repoaddress / branch / 2.0.x repoaddress / branch / dev / passion_new_stuff -m "recette secrète pour la domination du monde"
$

vous pouvez supprimer la commande echo si vous êtes satisfait des commandes svn générées

nagu
la source