ฉันมีเชลล์สคริปต์ที่เรามีบรรทัดต่อไปนี้if [ -z "$xyz" ]
และif [ -n "$abc" ]
แต่ฉันไม่แน่ใจว่าจุดประสงค์ของพวกเขาคืออะไร ใครช่วยอธิบายหน่อยได้ไหม
ฉันมีเชลล์สคริปต์ที่เรามีบรรทัดต่อไปนี้if [ -z "$xyz" ]
และif [ -n "$abc" ]
แต่ฉันไม่แน่ใจว่าจุดประสงค์ของพวกเขาคืออะไร ใครช่วยอธิบายหน่อยได้ไหม
คำตอบ:
คุณสามารถค้นหาข้อมูลอ้างอิงที่ดีมากสำหรับผู้ประกอบการทุบตีของที่นี่ หากคุณกำลังใช้เปลือกที่แตกต่างกันเพียงแค่ค้นหา<my shell> operators
และคุณจะพบทุกสิ่งที่คุณต้องการ ในกรณีเฉพาะของคุณคุณกำลังใช้:
-n
string is not null.
-z
string is null, that is, has zero length
เพื่อแสดง:
$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null
man test
หรือman [
จะให้ตัวเลือกทั้งหมดแก่คุณเพื่อทดสอบคำสั่ง ในกรณีนี้ -n กำลังทดสอบเพื่อดูว่าเนื้อหาของ $ abc มีความยาวไม่เป็นศูนย์และ -z กำลังทดสอบเพื่อดูว่าเนื้อหาของ $ xyz เป็นสตริงที่มีความยาวเป็นศูนย์หรือไม่
man test
(เสมอ?) ให้ man page สำหรับโปรแกรมภายนอกซึ่ง (สำหรับ GNU-coreutils version อย่างน้อย) เตือนอย่างชัดเจนว่าบางเชลล์ (IME ส่วนใหญ่) มีรุ่น builtin ที่อาจแตกต่างกัน