Parameter opsional dalam fungsi bash


12

Saya memiliki fungsi untuk dengan cepat membuat cabang SVN baru yang terlihat seperti itu

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

Yang saya gunakan untuk dengan cepat membuat cabang baru tanpa harus mencari dan menyalin paste alamat dan beberapa hal lainnya. Namun untuk pesan (-m opsi), saya ingin memilikinya sehingga jika saya memberikan parameter ketiga maka yang digunakan sebagai pesan, jika tidak pesan 'default' dari "dev branch for $ 2" digunakan. Adakah yang bisa menjelaskan bagaimana ini dilakukan?

Jawaban:


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

variabel msgdiatur ke $3jika $3tidak kosong, jika tidak diatur ke nilai default dev branch for $2. $msgkemudian digunakan sebagai argumen untuk -m.


3

dari halaman 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.

dalam kasus Anda, Anda akan menggunakannya

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

$ svcp 2 exciting_new_stuff
svn salin repoaddress / branch / 2.0.x repoaddress / branch / dev / exciting_new_stuff -m "dev branch for exciting_new_stuff"

$ svcp 2 exciting_new_stuff "resep rahasia untuk dominasi dunia"
svn salin repoaddress / branch / 2.0.x repoaddress / branch / dev / exciting_new_stuff -m "resep rahasia untuk dominasi dunia"
$

Anda dapat menghapus perintah gema jika Anda puas dengan perintah svn yang dihasilkan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.