$ {parameter: = word} Tetapkan Nilai Default. Jika parameter tidak disetel atau null, perluasan kata ditetapkan ke parameter. Nilai parameter kemudian diganti. Parameter posisi dan parameter khusus mungkin tidak ditetapkan dengan cara ini.
Saya pikir saya bisa menggunakan fitur ini untuk menulis, ${LONG_VARIABLE_NAME:=hello}
bukan lebih lama LONG_VARIABLE_NAME=${LONG_VARIABLE_NAME:-hello}
, tetapi sekarang bash juga mencoba mengeksekusi 'halo' dan itu memberikan perintah yang tidak ditemukan. Adakah cara untuk menghindarinya? Atau apakah saya harus tetap pada yang terakhir? Adakah yang bisa memberi contoh di mana penetapan default benar-benar bermanfaat?
Jawaban:
Gunakan titik dua:
Usus besar adalah perintah nol yang tidak melakukan apa-apa dan mengabaikan argumennya. Itu dibangun ke bash sehingga proses baru tidak dibuat.
sumber
: ${A:=hello}
persis selamaA=${A:-hello}
. Tampaknya yang terakhir ini sedikit kurang esoteris dan tujuannya lebih jelas. Menggunakan:
, yang pada dasarnya adalah no-op, nampak murung jika dibandingkan dengan cara OP melakukannya sebelumnya.:
pendekatannya akan lebih baik, baik untuk mengetik dan membaca. Ya, ini sepertinya area di mana Bash dapat menggunakan sedikit peningkatan.: ${VERY_LONG_VARIABLE_NAME:=hello}
vsVERY_LONG_VARIABLE_NAME=${VERY_LONG_VARIABLE_NAME:-hello}
. : . Saya harap Anda menggunakan nama variabel deskriptif dalam kode Anda :)VERY_LONG_VARIABLE_NAME=${VERY_LOGN_VARIABLE_NAME:-hello}
. Ups.A=$A:-hello
pendekatan ini adalah bahwa pendokumentasian diri ketika dijalankan denganset -x
. Artinya, tugas akan mencetak sebagaiA=hello
sedangkan perintah nol hanya akan mencetak nilai (hello
).Silakan lihat http://www.tldp.org/LDP/abs/html/parameter-substitution.html untuk contoh
Jika parameter tidak disetel, gunakan default. Setelah panggilan, parameter masih belum disetel.
Kedua bentuk itu hampir setara. Ekstra
:
membuat perbedaan hanya ketika parameter telah dideklarasikan, tetapi nol.Jika parameter tidak disetel, tetapkan nilai parameter ke default.
Kedua bentuknya hampir setara. The: membuat perbedaan hanya ketika parameter telah dinyatakan dan bernilai nol
Jika parameter ditetapkan, gunakan alt_value, jika tidak gunakan string nol. Setelah panggilan, nilai parameter tidak berubah.
Kedua bentuknya hampir setara. The: membuat perbedaan hanya ketika parameter telah dinyatakan dan bernilai nol
sumber
Perluasan parameter nilai default sering berguna dalam membangun skrip seperti contoh di bawah ini. Jika pengguna hanya memanggil skrip apa adanya, perl tidak akan dibangun. Pengguna harus secara eksplisit mengatur
WITH_PERL
ke nilai selain "tidak" untuk memilikinya dibangun.Bangun tanpa Perl
Bangun dengan Perl
sumber