ฉันทำตามคำแนะนำสคริปต์เปลือก bash นี้:
ในส่วนการเปรียบเทียบตัวเลขมันอ้างอิงตัวอย่าง:
anny > num=`wc -l work.txt`
anny > echo $num
201
anny > if [ "$num" -gt "150" ]
More input> then echo ; echo "you've worked hard enough for today."
More input> echo ; fi
สิ่งที่ดูเหมือนจะเกิดขึ้นข้างต้นคือเราเก็บสตริงคำสั่งไว้ในตัวแปร bash จากนั้นเราเรียกใช้ echo บนตัวแปร สิ่งที่น่าจะเกิดขึ้นคือสตริงถูกประเมินและคำสั่ง wc ถูกดำเนินการและส่งคืนจำนวนบรรทัดไปยังเทอร์มินัลการควบคุม
ตกลงดังนั้นฉันจึงเปิดตัวเทอร์มินัลของฉันใน Ubuntu 12.04 และลองทำสิ่งที่คล้ายกัน:
$ touch sample.txt && echo "Hello World" > sample.txt
$ cat sample.txt
Hello World
$ num='wc -l sample.txt'
echo $num
wc -l sample.txt
รอสักครู่ที่ไม่ได้ประเมินสตริงและส่งคืนจำนวนบรรทัด นั่นเพิ่งสะท้อนสตริงกลับไปที่เทอร์มินัล เหตุใดฉันจึงได้ผลลัพธ์ที่แตกต่าง
wc -l work.txt
แทนจะกำหนดจำนวน 201