ใช้งานได้ในเชลล์ (ทุบตี, เส้นประ)
[ -z "" ] && echo A || echo B
A
อย่างไรก็ตามฉันพยายามเขียนเชลล์สคริปต์POSIXมันเริ่มต้นดังนี้:
#!/bin/sh
[ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1
readonly raw_input_string=${1}
[ -z "${raw_input_string}" ] && echo "The given argument is empty."; exit 1
และฉันไม่รู้ว่าทำไม แต่ฉันไม่ได้รับข้อความ :
อาร์กิวเมนต์ที่ให้นั้นว่างเปล่า
ถ้าฉันเรียกสคริปต์เช่นนี้:
./test_empty_argument ""
ทำไมถึงเป็นอย่างนั้น?
if [ X”” = X”$var” ] ; then echo isempty ; fi
[ "" = "$var" ]
จะทำงานได้ดี; [
สตริงที่ว่างเปล่าที่ยกมาจะไม่ถูกลบออกจากรายการอาร์กิวเมนต์ของ แต่นั่นไม่ใช่สิ่งที่จำเป็นอย่างใดอย่างหนึ่งเพราะ[ -z "$var" ]
ยังทำงานได้ดี