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.