ข้อผิดพลาดของคุณอยู่ในบรรทัดนี้:
b=`แมว /pg/$i | หัว -n 2 |awk '{พิมพ์ $8}'`
ศีรษะ
จะไม่ให้บรรทัดที่สองแก่คุณ แต่ น บรรทัดแรก
ดังนั้น ข
จะเป็น:
30
30
และไม่ 30
วิธีที่คุณพูด
ดังนั้นข้อผิดพลาด
30+30
30
คุณต้องการ (ในขณะที่รักษาโครงสร้างที่ซับซ้อนของคุณ):
b=`แมว /pg/$i | หัว -n 2 |awk '{พิมพ์ $8}' | หาง -n 1`
อย่างไรก็ตาม!
มีการใช้สิ่งต่าง ๆ ที่ไร้ประโยชน์ / แปลก ๆ มากมายในสคริปต์เล็ก ๆ ของคุณ:
เท่านี้ก็เพียงพอแล้ว:
b=$(awk 'NR==2{พิมพ์ $8}' "/pg/$i")
หมายเหตุการใช้ $(...)
แทน backticks ซึ่งเหมือนกัน แต่จะเป็นที่ต้องการ.
เหมือนกันกับบรรทัดนี้
a=`แมว /pg/$i | หัว -n 1 |awk '{พิมพ์ $8}'`
จะดีกว่า
a=$(awk 'NR==1{พิมพ์ $8}' "/pg/$i")
อย่างไรก็ตาม คุณสามารถคำนวณเลขคณิตได้ภายใน อึดอัด
เท่านั้น:
c=$(awk 'NR<=2{sum+=$8}END{print sum}')
นอกจากนี้คุณยังเป็น การแยกวิเคราะห์ ล
ซึ่งเป็นตัวเลือกที่ไม่ดี:
ไฟล์=`ls -l | awk '{พิมพ์ $9}'`
แค่นี้ไม่ได้เหรอ
สำหรับฉันใน *; ทำ ... เสร็จแล้ว
ขึ้นอยู่กับว่าคุณต้องการทำอะไร ค
คุณอาจเขียนสคริปต์ทั้งหมดเป็นหนึ่งเดียวได้ อึดอัด
สั่งการ.