Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Hướng dẫn về trạng thái thoát Bash Shell với các ví dụ thực tế

Trong bài viết giới thiệu bash của chúng tôi, chúng tôi đã biết rằng một tệp shell-script chứa danh sách các lệnh sẽ được thực thi bởi trình thông dịch shell. Trong bài viết này, hãy để chúng tôi xem xét về các lệnh shell và nội dung của nó.

Một lệnh là một chuỗi các từ. Từ đầu tiên cho biết lệnh sẽ được thực thi và các từ còn lại được chuyển dưới dạng đối số, trong đó các đối số có thể là tùy chọn hoặc tham số cho lệnh.

Một số lệnh Unix phổ biến mà bạn thực hiện tại dòng lệnh là các lệnh shell. Ví dụ:lệnh ls, lpr và grep.

$ ls -alF

$ lpr filename

$ grep "string" filename

Trạng thái thoát lệnh Shell

Giá trị trả về của lệnh là trạng thái thoát của nó, hoặc 128 + N nếu lệnh được kết thúc bằng tín hiệu N. Trạng thái thoát được sử dụng để kiểm tra kết quả (thành công / thất bại) của việc thực hiện lệnh. Nếu trạng thái thoát là 0, thì lệnh đã thành công. Nếu lệnh không thành công, trạng thái thoát sẽ khác không.

Giá trị thoát Trạng thái thoát
0 (Không) Thành công
Khác không Không thành công
2 Cách sử dụng không chính xác
127 Không tìm thấy lệnh
126 Không phải là tệp thực thi

$? Biến Shell

Tên biến shell $? là một biến tích hợp đặc biệt có trạng thái thoát của lệnh cuối cùng được thực thi.

  • Sau khi thực thi hàm shell, $? trả về trạng thái thoát của lệnh cuối cùng được thực thi trong một hàm.
  • Sau khi thực thi tập lệnh shell, $? trả về trạng thái thoát của lệnh cuối cùng được thực thi trong tập lệnh.

Tập lệnh Shell mẫu giải thích trạng thái thoát lệnh Shell

Tập lệnh shell exitstatus.sh sau đây hiển thị các ví dụ về các trạng thái thoát lệnh shell khác nhau.

$ 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" $?

Bây giờ, hãy thực thi exitstatus.sh ở trên để xem các bức tượng thoát khác nhau được cung cấp bởi tập lệnh shell mẫu.

$ 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

Lưu ý:Kiểm tra giá trị trả về của một hàm hoặc một lệnh là một trong những trách nhiệm chính của lập trình viên. Điều này sẽ trở thành bản chất thứ hai của bạn khi viết bất kỳ mã nào.