:+
Ş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 $var
tanımlanmışsa echo ${var:+foo}
yazdırır foo
ve 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 $PATH
ayarlı değil. Örneğin:
$ PATH="/usr/bin"
$ PATH="/new/dir:$PATH" ## Add a directory
$ echo "$PATH"
/new/dir:/usr/bin
Ama eğer PATH
ayarlanmamış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
.