:+
เป็นรูปแบบของการขยายตัวพารามิเตอร์ :
$ {พารามิเตอร์: + [คำ]} : ใช้ค่าทางเลือก
หากพารามิเตอร์ไม่ได้ตั้งค่าหรือเป็นโมฆะ null จะถูกทดแทน; มิฉะนั้นการขยายตัวของคำ (หรือสตริงที่ว่างถ้าคำถูกละเว้น) จะถูกแทนที่
กล่าวอีกนัยหนึ่งถ้าตัวแปร$var
ถูกกำหนดไว้echo ${var:+foo}
จะพิมพ์foo
และหากไม่เป็นเช่นนั้นตัวแปรนั้นจะพิมพ์สตริงว่าง
ประการที่สอง:
ไม่มีอะไรพิเศษ $PATH
มันเป็นตัวละครที่ใช้เป็นตัวคั่นในรายชื่อของไดเรกทอรีใน ดังนั้นPATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}"
เป็นวิธีการเขียนชวเลข:
if [ -z "$PATH" ]; then
PATH=/usr/local/bin:/usr/bin
else
PATH=/usr/local/bin:/usr/bin:$PATH
fi
เป็นเพียงเคล็ดลับที่ชาญฉลาดเพื่อหลีกเลี่ยงการเพิ่มส่วนเกิน:
เมื่อ$PATH
ไม่ได้ตั้งค่า ตัวอย่างเช่น:
$ PATH="/usr/bin"
$ PATH="/new/dir:$PATH" ## Add a directory
$ echo "$PATH"
/new/dir:/usr/bin
แต่ถ้าPATH
unset:
$ unset PATH
$ PATH="/new/dir:$PATH"
$ echo "$PATH"
/new/dir:
ด้วยตัวเองเพิ่มไดเรกทอรีปัจจุบันไป:
หลีกเลี่ยง$PATH
การใช้PATH="/new/dir${PATH:+:$PATH}"
สิ่งนี้ ดังนั้นคุณสามารถใช้PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin"
ถ้าคุณต้องการหรือคุณสามารถใช้PATH="$PATH:/usr/local/bin:/usr/bin"
ถ้าคุณต้องการ แตกต่างเพียงว่าอดีตอาจเพิ่มเป็นพิเศษดังนั้นการเพิ่มไดเรกทอรีปัจจุบันของคุณไป:
$PATH