<ก่อนหน้านี้ | Contents | ถัดไป>
นิพจน์สตริง
นิพจน์ต่อไปนี้ใช้เพื่อประเมินสตริง:
ตาราง 27-2: ทดสอบนิพจน์สตริง
นิพจน์เป็นจริงถ้า...
นิพจน์เป็นจริงถ้า...
เชือก เชือก ไม่เป็นโมฆะ
-n เชือก ความยาวของ เชือก มีค่ามากกว่าศูนย์
-z เชือก ความยาวของ เชือก เป็นศูนย์
string1 = สตริง2 สตริง1 == สตริง2
string1 และ string2 เท่ากัน อาจใช้เครื่องหมายเท่ากับเดี่ยวหรือสองเท่า แต่ควรใช้เครื่องหมายเท่ากับสองเท่า
string1 != string2 string1 และ string2 ไม่เท่ากัน string1 > string2 string1 เรียงลำดับตาม string2. string1 < string2 string1 เรียงลำดับก่อน string2.
การเตือน: > และ < ตัวดำเนินการนิพจน์ต้องยกมา (หรือหลีกด้วยแบ็กสแลช) เมื่อใช้กับ ทดสอบ. หากไม่เป็นเช่นนั้น เชลล์จะตีความเชลล์ว่าเป็นโอเปอเรเตอร์การเปลี่ยนเส้นทาง โดยอาจส่งผลเสียหายได้ พึงทราบด้วยว่าในขณะที่ ทุบตี เอกสารระบุว่าลำดับการจัดเรียงเป็นไปตามลำดับการจัดเรียงของสถานที่ปัจจุบัน แต่ไม่เป็นเช่นนั้น ลำดับ ASCII (POSIX) ใช้ในเวอร์ชันของ ทุบตี มากถึงและรวมถึง 4.0
นี่คือสคริปต์ที่รวมนิพจน์สตริง:
#! / bin / ทุบตี
# สตริงทดสอบ: ประเมินค่าของสตริง ANSWER=maybe
ถ้า [ -z "$ANSWER" ]; แล้ว
ก้อง "ไม่มีคำตอบ" >&2 ทางออก 1
fi
ถ้า [ "$ANSWER" = "ใช่" ]; แล้วก้อง "คำตอบคือใช่"
elif [ "$ANSWER" = "ไม่" ]; แล้วก้อง "คำตอบคือ ไม่"
elif [ "$ANSWER" = "อาจจะ" ]; แล้วก้อง "คำตอบคืออาจจะ"
อื่น
echo "คำตอบคือไม่ทราบ"
fi
#! / bin / ทุบตี
# สตริงทดสอบ: ประเมินค่าของสตริง ANSWER=maybe
ถ้า [ -z "$ANSWER" ]; แล้ว
ก้อง "ไม่มีคำตอบ" >&2 ทางออก 1
fi
ถ้า [ "$ANSWER" = "ใช่" ]; แล้วก้อง "คำตอบคือใช่"
elif [ "$ANSWER" = "ไม่" ]; แล้วก้อง "คำตอบคือ ไม่"
elif [ "$ANSWER" = "อาจจะ" ]; แล้วก้อง "คำตอบคืออาจจะ"
อื่น
echo "คำตอบคือไม่ทราบ"
fi
ในสคริปต์นี้ เราประเมินค่าคงที่ ตอบ. ก่อนอื่นเราพิจารณาว่าสตริงนั้นว่างเปล่าหรือไม่ หากเป็นเช่นนั้น เราจะยุติสคริปต์และตั้งค่าสถานะการออกเป็นสถานะเดียว สังเกตการเปลี่ยนเส้นทางที่ใช้กับคำสั่ง echo สิ่งนี้เปลี่ยนเส้นทางข้อความแสดงข้อผิดพลาด "ไม่มีคำตอบ" ข้อผิดพลาดมาตรฐาน ซึ่งเป็นสิ่งที่เหมาะสมที่ต้องทำกับข้อความแสดงข้อผิดพลาด หากสตริงไม่ว่างเปล่า เราจะประเมินค่าของสตริงเพื่อดูว่ามีค่าเท่ากับ "ใช่" "ไม่ใช่" หรือ "อาจจะ" เราทำสิ่งนี้โดยใช้ elifซึ่งย่อมาจาก "else if" โดยใช้ elifเราสามารถสร้างการทดสอบเชิงตรรกะที่ซับซ้อนยิ่งขึ้นได้