Parámetros opcionales en la función bash


12

Tengo una función para hacer rápidamente una nueva rama SVN que se ve así

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

Lo cual uso para crear rápidamente una nueva sucursal sin tener que buscar y copiar, pegar las direcciones y otras cosas. Sin embargo, para el mensaje (opción -m), me gustaría tenerlo para que, si proporciono un tercer parámetro, se use como mensaje; de ​​lo contrario, se usará el mensaje "predeterminado" de "rama de desarrollo por $ 2". ¿Alguien puede explicar cómo se hace esto?

Respuestas:


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

la variable msgse establece en $3si $3no está vacía; de lo contrario, se establece en el valor predeterminado de dev branch for $2. $msgluego se usa como argumento para -m.


3

de la página de manual 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.

en su caso, usaría

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

$ svcp 2 emocionante_nuevo_nuevo
svn copy repoaddress / branch / 2.0.x repoaddress / branch / dev / emocionante_nuevo_estuff -m "dev rama de emocionante_nuevo_stuff"

$ svcp 2 vibrant_new_stuff "receta secreta para dominar el mundo"
svn copy repoaddress / branch / 2.0.x repoaddress / branch / dev / vibrant_new_stuff -m "receta secreta para la dominación mundial"
PS

puede eliminar el comando echo si está satisfecho con los comandos svn que se generan

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.