ในบทความแนะนำทุบตีของเรา เราได้เรียนรู้ว่าไฟล์เชลล์สคริปต์มีรายการคำสั่งที่จะดำเนินการโดยล่ามเชลล์ ในบทความนี้ให้เราทบทวนเกี่ยวกับคำสั่งเชลล์และการทำงานภายใน
คำสั่งคือลำดับของคำ คำแรกระบุคำสั่งที่จะดำเนินการและคำที่เหลือจะถูกส่งผ่านเป็นอาร์กิวเมนต์ โดยที่อาร์กิวเมนต์อาจเป็นตัวเลือกหรือพารามิเตอร์ของคำสั่ง
คำสั่ง Unix ทั่วไปบางคำสั่งที่คุณดำเนินการที่บรรทัดคำสั่ง เป็นคำสั่งเชลล์ ตัวอย่างเช่น คำสั่ง ls, lpr และ grep
$ ls -alF $ lpr filename $ grep "string" filename
สถานะการออกคำสั่งเชลล์
ค่าส่งคืนของคำสั่งคือสถานะการออก หรือ 128 + N หากคำสั่งถูกยกเลิกโดยสัญญาณ N สถานะการออกจะใช้เพื่อตรวจสอบผลลัพธ์ (สำเร็จ/ล้มเหลว) ของการดำเนินการคำสั่ง หากสถานะการออกเป็นศูนย์ แสดงว่าคำสั่งสำเร็จ หากคำสั่งล้มเหลว สถานะการออกจะไม่เป็นศูนย์
ค่าออก | สถานะการออก |
---|---|
0 (ศูนย์) | ความสำเร็จ |
ไม่เป็นศูนย์ | ล้มเหลว |
2 | การใช้งานไม่ถูกต้อง |
127 | ไม่พบคำสั่ง |
126 | ไม่ใช่ไฟล์ปฏิบัติการ |
$? ตัวแปรเชลล์
ชื่อตัวแปรเชลล์ $? เป็นตัวแปรบิวท์อินพิเศษซึ่งมีสถานะการออกของคำสั่งสุดท้ายที่ดำเนินการ
- หลังจากดำเนินการฟังก์ชันเชลล์แล้ว $? คืนค่าสถานะการออกของคำสั่งสุดท้ายที่ดำเนินการในฟังก์ชัน
- หลังจากดำเนินการเชลล์สคริปต์แล้ว $? ส่งคืนสถานะการออกของคำสั่งสุดท้ายที่ดำเนินการในสคริปต์
ตัวอย่างเชลล์สคริปต์ที่อธิบายสถานะการออกคำสั่งเชลล์
เชลล์สคริปต์ exitstatus.sh ต่อไปนี้แสดงตัวอย่างสถานะการออกคำสั่งเชลล์ต่างๆ
$ cat exitstatus.sh #! /bin/bash echo -e "Successful execution" echo -e "=====================" echo "hello world" # Exit status returns 0, because the above command is a success. echo "Exit status" $? echo -e "Incorrect usage" echo -e "=====================" ls --option # Incorrect usage, so exit status will be 2. echo "Exit status" $? echo -e "Command Not found" echo -e "=====================" bashscript # Exit status returns 127, because bashscript command not found echo "Exit status" $? echo -e "Command is not an executable" echo -e "=============================" ls -l execution.sh ./execution.sh # Exit status returns 126, because its not an executable. echo "Exit status" $?
ตอนนี้ เรียกใช้ exitstatus.sh ด้านบนเพื่อดูรูปปั้นทางออกต่างๆ ที่กำหนดโดยเชลล์สคริปต์ตัวอย่าง
$ bash exitstatus.sh Successful execution ===================== hello world Exit status 0 Incorrect usage ===================== ls: unrecognized option `--option' Try `ls --help' for more information. Exit status 2 Command Not found ===================== exitstaus.sh: line 15: bashscript: command not found Exit status 127 Command is not an executable ============================= -rw-r--r-- 1 root root 659 Mar 9 13:36 execution.sh exitstatus.sh: line 21: ./execution.sh: Permission denied Exit status 126
หมายเหตุ:การตรวจสอบค่าส่งคืนของฟังก์ชันหรือคำสั่งเป็นหนึ่งในความรับผิดชอบหลักของโปรแกรมเมอร์ สิ่งนี้ควรกลายเป็นลักษณะที่สองของคุณในขณะที่เขียนโค้ดใดๆ