/ usr / bin / [คืออะไรและฉันจะใช้ได้อย่างไร


26

ฉันถูกมองที่ coreutils และพบนี้เป็นหนึ่งในไฟล์รวมเป็นส่วนหนึ่งของ /usr/bin/[coreutils: มันคืออะไร[และทำอะไร?

มันเป็นปฏิบัติการ ฉันแค่ไม่รู้ว่ามันทำอะไรหรือใช้อย่างไร

$ file / usr / bin / [
/ usr / bin / [: ELF ปฏิบัติการได้ 32 บิต LSB, Intel 80386, รุ่น 1 (SYSV), เชื่อมโยงแบบไดนามิก (ใช้ libs ที่ใช้ร่วมกัน), สำหรับ GNU / Linux 2.6.15, ถูกปล้น

เมื่อฉันพยายามเรียกใช้ฉันคิดว่ามันเป็นค่าเริ่มต้นของการทุบตีในบรรทัดการขยายตัว แทนที่จะเรียกใช้ไฟล์จริง

$ "/ usr / bin / ["
/ usr / bin / [: ขาดหายไป] ']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [ทำงานบน OS X.
Daniel Beck

คำตอบ:


33

testมันเป็นเทียบเท่าของคำสั่ง (ดูinfo test.) โดยทั่วไปคุณใช้ในสคริปต์ในนิพจน์ตามเงื่อนไขเช่น:

if [ -n "$1" ]; then
    echo $1
fi

จำเป็นต้องใช้วงเล็บปิดเพื่อล้อมรอบเงื่อนไข (ดูเหมือนว่ามันจำเป็นต้องมีเพียงเพื่อดูดีกว่าในรหัสใครรู้เหตุผลการปฏิบัติอื่น ๆ ได้หรือไม่)


3
โปรดทราบว่า[เป็นทั้งเชลล์ในตัวและโปรแกรมภายนอกที่มีการใช้งานเหมือนกัน (หรือคล้ายกัน) ใน bash เมื่อคุณรัน[หรือtestคุณกำลังเรียกใช้บิวด์อิน
grawity

มันจำเป็นเพราะถ้ามันเป็นตัวเลือกไวยากรณ์จะไม่ชัดเจนในบางสถานการณ์
Random832

20

มันเทียบเท่ากับtestคำสั่ง

แทน

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

คุณสามารถใช้ได้:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

มันสามารถใช้ในลูปได้เช่นกัน:

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

นอกจากนี้คุณยังสามารถใช้พวกเขาในหนึ่ง liners เช่นนี้:

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt

2
ตัวอย่างที่ดีของวิธีการใช้งาน "if / usr / bin / ["
nelaaro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.