<ก่อนหน้านี้ | Contents | ถัดไป>
การขยายเพื่อจัดการตัวแปรว่าง
การขยายพารามิเตอร์หลายอย่างมีวัตถุประสงค์เพื่อจัดการกับตัวแปรที่ไม่มีอยู่จริงและว่างเปล่า การขยายเหล่านี้มีประโยชน์สำหรับการจัดการพารามิเตอร์ตำแหน่งที่ขาดหายไปและการกำหนดค่าข้อบกพร่องให้กับพารามิเตอร์
${พารามิเตอร์:-word}
If พารามิเตอร์ ไม่ได้ตั้งค่า (กล่าวคือ ไม่มีอยู่) หรือว่างเปล่า การขยายนี้ส่งผลให้เกิดค่าของ word. ถ้า พารามิเตอร์ ไม่ว่างเปล่าการขยายผลในค่าของ พารามิเตอร์.
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:-"เปลี่ยนค่าถ้าไม่ได้ตั้งค่า"}
ค่าทดแทนหากไม่ได้ตั้งค่า [me@linuxbox ~]$ เสียงสะท้อน $foo
[me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:-"เปลี่ยนค่าถ้าไม่ได้ตั้งค่า"}
บาร์
[me@linuxbox ~]$ เสียงสะท้อน $foo
บาร์
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:-"เปลี่ยนค่าถ้าไม่ได้ตั้งค่า"}
ค่าทดแทนหากไม่ได้ตั้งค่า [me@linuxbox ~]$ เสียงสะท้อน $foo
[me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:-"เปลี่ยนค่าถ้าไม่ได้ตั้งค่า"}
บาร์
[me@linuxbox ~]$ เสียงสะท้อน $foo
บาร์
${พารามิเตอร์:=word}
If พารามิเตอร์ ไม่ได้ตั้งค่าหรือว่างเปล่า การขยายนี้ส่งผลให้เกิดค่าของ word. นอกจากนี้ ค่าของ word ถูกกำหนดให้เป็น พารามิเตอร์. ถ้า พารามิเตอร์ ไม่ว่างเปล่าการขยายตัวส่งผลให้มีค่า พารามิเตอร์.
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:="default value if unset"}
ค่าเริ่มต้นหากไม่ได้ตั้งค่า [me@linuxbox ~]$ เสียงสะท้อน $foo ค่าเริ่มต้นหากไม่ได้ตั้งค่า [me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:="default value if unset"}
บาร์
[me@linuxbox ~]$ เสียงสะท้อน $foo
บาร์
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:="default value if unset"}
ค่าเริ่มต้นหากไม่ได้ตั้งค่า [me@linuxbox ~]$ เสียงสะท้อน $foo ค่าเริ่มต้นหากไม่ได้ตั้งค่า [me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:="default value if unset"}
บาร์
[me@linuxbox ~]$ เสียงสะท้อน $foo
บาร์
หมายเหตุ: ไม่สามารถกำหนดตำแหน่งและพารามิเตอร์พิเศษอื่น ๆ ด้วยวิธีนี้
${พารามิเตอร์:?word}
If พารามิเตอร์ ไม่ได้ตั้งค่าหรือว่างเปล่า ส่วนขยายนี้ทำให้สคริปต์ออกโดยมีข้อผิดพลาดและเนื้อหาของ word ถูกส่งไปยังข้อผิดพลาดมาตรฐาน ถ้า พารามิเตอร์ ไม่ว่างเปล่าการขยายผลในค่าของ พารามิเตอร์.
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:?"พารามิเตอร์ว่างเปล่า"}
bash: foo: พารามิเตอร์ว่างเปล่า [me@linuxbox ~]$ ก้อง $?
1
[me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:?"พารามิเตอร์ว่างเปล่า"}
บาร์
[me@linuxbox ~]$ ก้อง $?
0
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:?"พารามิเตอร์ว่างเปล่า"}
bash: foo: พารามิเตอร์ว่างเปล่า [me@linuxbox ~]$ ก้อง $?
1
[me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:?"พารามิเตอร์ว่างเปล่า"}
บาร์
[me@linuxbox ~]$ ก้อง $?
0
${พารามิเตอร์:+word}
If พารามิเตอร์ ไม่ได้ตั้งค่าหรือว่างเปล่า การขยายจะไม่มีผลอะไรเลย ถ้า พารามิเตอร์ ไม่ว่างเปล่าค่าของ word ถูกแทนที่ด้วย พารามิเตอร์; อย่างไรก็ตามค่าของ พารามิเตอร์ จะไม่เปลี่ยนแปลง
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:+"แทนที่ค่าถ้าตั้งค่า"}
[me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:+"แทนที่ค่าถ้าตั้งค่า"}
[me@linuxbox ~]$ ฟู=
[me@linuxbox ~]$ echo ${foo:+"แทนที่ค่าถ้าตั้งค่า"}
[me@linuxbox ~]$ ฟู=บาร์
[me@linuxbox ~]$ echo ${foo:+"แทนที่ค่าถ้าตั้งค่า"}
ค่าทดแทนถ้า set
ค่าทดแทนถ้า set