โปรดดูที่http://www.tldp.org/LDP/abs/html/parameter-substitution.htmlสำหรับตัวอย่าง
${parameter-default}, ${parameter:-default}
หากไม่ได้ตั้งค่าพารามิเตอร์ให้ใช้ค่าเริ่มต้น หลังจากการโทรแล้วพารามิเตอร์ยังไม่ได้ตั้งค่า
ทั้งสองรูปแบบเกือบจะเทียบเท่ากัน ค่าพิเศษ:
สร้างความแตกต่างเฉพาะเมื่อมีการประกาศพารามิเตอร์ แต่เป็นโมฆะ
unset EGGS
echo 1 ${EGGS-spam} # 1 spam
echo 2 ${EGGS:-spam} # 2 spam
EGGS=
echo 3 ${EGGS-spam} # 3
echo 4 ${EGGS:-spam} # 4 spam
EGGS=cheese
echo 5 ${EGGS-spam} # 5 cheese
echo 6 ${EGGS:-spam} # 6 cheese
${parameter=default}, ${parameter:=default}
หากไม่ได้ตั้งค่าพารามิเตอร์ให้ตั้งค่าพารามิเตอร์เป็นค่าเริ่มต้น
ทั้งสองรูปแบบเกือบเทียบเท่ากัน The: สร้างความแตกต่างเฉพาะเมื่อมีการประกาศพารามิเตอร์และเป็นโมฆะ
# sets variable without needing to reassign
# colons suppress attempting to run the string
unset EGGS
: ${EGGS=spam}
echo 1 $EGGS # 1 spam
unset EGGS
: ${EGGS:=spam}
echo 2 $EGGS # 2 spam
EGGS=
: ${EGGS=spam}
echo 3 $EGGS # 3 (set, but blank -> leaves alone)
EGGS=
: ${EGGS:=spam}
echo 4 $EGGS # 4 spam
EGGS=cheese
: ${EGGS:=spam}
echo 5 $EGGS # 5 cheese
EGGS=cheese
: ${EGGS=spam}
echo 6 $EGGS # 6 cheese
${parameter+alt_value}, ${parameter:+alt_value}
หากตั้งค่าพารามิเตอร์ให้ใช้ alt_value มิฉะนั้นให้ใช้สตริงว่าง หลังจากการโทรค่าพารามิเตอร์จะไม่เปลี่ยนแปลง
ทั้งสองรูปแบบเกือบเทียบเท่ากัน The: สร้างความแตกต่างเฉพาะเมื่อมีการประกาศพารามิเตอร์และเป็นโมฆะ
unset EGGS
echo 1 ${EGGS+spam} # 1
echo 2 ${EGGS:+spam} # 2
EGGS=
echo 3 ${EGGS+spam} # 3 spam
echo 4 ${EGGS:+spam} # 4
EGGS=cheese
echo 5 ${EGGS+spam} # 5 spam
echo 6 ${EGGS:+spam} # 6 spam