Saya telah melihat beberapa skrip yang ditulis orang lain (khususnya Red Hat), dan banyak variabelnya ditetapkan menggunakan notasi berikutVARIABLE1="${VARIABLE1:-some_val}"
atau perluas variabel lainVARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}"
Apa gunanya menggunakan notasi ini daripada hanya mendeklarasikan nilai secara langsung (mis., VARIABLE1=some_val )?
Apakah ada manfaat dari notasi ini atau kemungkinan kesalahan yang dapat dicegah?
Apakah :- memiliki arti khusus dalam konteks ini?
Jawaban yang Diterima:
Teknik ini memungkinkan variabel untuk diberi nilai jika variabel lain kosong atau tidak terdefinisi. CATATAN: “Variabel lain” ini bisa sama atau variabel lain.
kutipan
${parameter:-word}
If parameter is unset or null, the expansion of word is substituted.
Otherwise, the value of parameter is substituted.
CATATAN: Formulir ini juga berfungsi, ${parameter-word} . Jika Anda ingin melihat daftar lengkap semua bentuk ekspansi parameter yang tersedia di Bash, saya sangat menyarankan Anda melihat topik ini di wiki Bash Hacker berjudul:“Ekspansi parameter“.
Contoh
variabel tidak ada
$ echo "$VAR1"
$ VAR1="${VAR1:-default value}"
$ echo "$VAR1"
default value
variabel ada
$ VAR1="has value"
$ echo "$VAR1"
has value
$ VAR1="${VAR1:-default value}"
$ echo "$VAR1"
has value
Hal yang sama dapat dilakukan dengan mengevaluasi variabel lain, atau menjalankan perintah dalam bagian nilai default dari notasi.
$ VAR2="has another value"
$ echo "$VAR2"
has another value
$ echo "$VAR1"
$
$ VAR1="${VAR1:-$VAR2}"
$ echo "$VAR1"
has another value
Contoh Lainnya
Anda juga dapat menggunakan notasi yang sedikit berbeda yang hanya VARX=${VARX-<def. value>} .
$ echo "${VAR1-0}"
has another value
$ echo "${VAR2-0}"
has another value
$ echo "${VAR3-0}"
0
Dalam $VAR1 di atas &$VAR2 sudah didefinisikan dengan string “memiliki nilai lain” tetapi $VAR3 tidak terdefinisi, jadi nilai default yang digunakan sebagai gantinya, .
Contoh Lain
$ VARX="${VAR3-0}"
$ echo "$VARX"
0
Memeriksa dan menetapkan menggunakan := notasi
Terakhir saya akan menyebutkan operator yang berguna, := . Ini akan melakukan pemeriksaan dan menetapkan nilai jika variabel yang diuji kosong atau tidak ditentukan.
Contoh
Perhatikan bahwa $VAR1 sekarang ditetapkan. Operator := melakukan tes dan tugas dalam satu operasi.
$ unset VAR1
$ echo "$VAR1"
$ echo "${VAR1:=default}"
default
$ echo "$VAR1"
default
Namun jika nilainya ditetapkan sebelumnya, maka dibiarkan saja.
$ VAR1="some value"
$ echo "${VAR1:=default}"
some value
$ echo "$VAR1"
some value
Tabel Referensi Handy Dandy

Referensi
- Ekspansi Parameter – Bash Hacker Wiki
- 10.2. Substitusi Parameter
- Ekspansi Parameter Bash