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?

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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.