Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

บทแนะนำสถานะการออกจาก Bash Shell พร้อมตัวอย่างที่ใช้งานได้จริง

ในบทความแนะนำทุบตีของเรา เราได้เรียนรู้ว่าไฟล์เชลล์สคริปต์มีรายการคำสั่งที่จะดำเนินการโดยล่ามเชลล์ ในบทความนี้ให้เราทบทวนเกี่ยวกับคำสั่งเชลล์และการทำงานภายใน

คำสั่งคือลำดับของคำ คำแรกระบุคำสั่งที่จะดำเนินการและคำที่เหลือจะถูกส่งผ่านเป็นอาร์กิวเมนต์ โดยที่อาร์กิวเมนต์อาจเป็นตัวเลือกหรือพารามิเตอร์ของคำสั่ง

คำสั่ง 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

หมายเหตุ:การตรวจสอบค่าส่งคืนของฟังก์ชันหรือคำสั่งเป็นหนึ่งในความรับผิดชอบหลักของโปรแกรมเมอร์ สิ่งนี้ควรกลายเป็นลักษณะที่สองของคุณในขณะที่เขียนโค้ดใดๆ