Ekspansi variabel ${parameter:-word}
akan menggunakan nilai $parameter
jika disetel dan non-null (bukan string kosong), jika tidak maka akan menggunakan string word
.
Menghilangkan :
tidak akan menguji apakah nilainya kosong, hanya apakah itu tidak disetel atau tidak.
Ini berarti bahwa ${PS1-}
akan memperluas ke nilai $PS1
jika diatur, tetapi ke string kosong jika itu kosong atau tidak disetel. Dalam hal ini, ini adalah persis sama seperti ${PS1:-}
sebagai string setelah -
juga kosong.
Perbedaan antara "${PS1-}"
dan "$PS1"
halus, seperti yang dicatat oleh @Rakesh Sharma: keduanya akan diperluas ke nilai $PS1
, atau ke string kosong jika tidak disetel. Pengecualiannya adalah ketika set -u
sedang aktif, dalam hal ini memperluas variabel yang tidak disetel akan menyebabkan kesalahan . Nilai default (kosong) yang diatur oleh "${PS1-}"
circumvents this, memperluas unset PS1
ke string kosong tanpa kesalahan.
Ini adalah sintaks standar ( berasal dari shell Bourne di akhir 70-an ), seperti halnya beberapa ekspansi serupa lainnya.