:+Şeklidir parametre genişleme :
$ {parametre: + [kelime]} : Alternatif Değer kullanın.
Parametre ayarlanmamış veya boşsa, boş bırakılmalıdır; Aksi takdirde, kelimenin genişlemesi (veya eğer kelime kullanılmazsa boş bir dize) değiştirilmelidir.
Başka bir deyişle, değişken $vartanımlanmışsa echo ${var:+foo}yazdırır foove değilse, boş dizeyi yazdırır.
İkincisi :özel bir şey değil. İçindeki dizin listesinde ayırıcı olarak kullanılan karakterdir $PATH. Yani, PATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}"kestirme bir yoldur:
if [ -z "$PATH" ]; then
PATH=/usr/local/bin:/usr/bin
else
PATH=/usr/local/bin:/usr/bin:$PATH
fi
Bu bir ekstra eklemekten kaçının sadece akıllı numara :zaman $PATHayarlı değil. Örneğin:
$ PATH="/usr/bin"
$ PATH="/new/dir:$PATH" ## Add a directory
$ echo "$PATH"
/new/dir:/usr/bin
Ama eğer PATHayarlanmamışsa:
$ unset PATH
$ PATH="/new/dir:$PATH"
$ echo "$PATH"
/new/dir:
A :, geçerli dizini tek başına ekler $PATH. PATH="/new/dir${PATH:+:$PATH}"Bunu kullanmak önler. Yani tabii PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin"ki istersen kullanabilirsin ya da istersen kullanabilirsin PATH="$PATH:/usr/local/bin:/usr/bin". Tek fark, eski olanın fazladan ekleyebilmesi ve :böylece mevcut dizininizi de eklemektir $PATH.