Tôi đang sử dụng Debian 6.0. Tôi biết các đối số dòng lệnh thông thường nhưng không thể tìm thấy những gì $?
có nghĩa là gì? Có ai có ý tưởng gì $?
về Linux shell không?
Tôi đang sử dụng Debian 6.0. Tôi biết các đối số dòng lệnh thông thường nhưng không thể tìm thấy những gì $?
có nghĩa là gì? Có ai có ý tưởng gì $?
về Linux shell không?
Câu trả lời:
bash , không vỏ . (Bash là nhưng một trong số các vỏ có thể. Mặc dù vậy, nó là phổ biến nhất)
Nó có nghĩa là mã thoát của lệnh cuối cùng đã thực thi.
Xem tại đây: http://tldp.org/LDP/abs/html/othertypesv.html và tại đây http://tldp.org/LDP/abs/html/exit-status.html
bash
, nhưng xuất $?
phát từ vỏ Bourne.
Đối với hệ vỏ hỗ trợ biến vỏ này "$?" chứa mã trả về của một lệnh được thực thi gần đây nhất.
Vì vậy, nếu bạn đang chạy chương trình "abc", trả về 1 khi thoát
$ echo $?
cho "1" - mã trả về.
Và nó không chỉ có sẵn trong bash, các shell khác cũng có tính năng này.
Ồ, họ đã đề cập rằng đó là mã trả về của chương trình được thực hiện cuối cùng, nhưng không ai đề cập rằng nếu nó nhiều hơn 0 thì có lẽ nó chỉ ra lỗi. Đó là thông lệ chung khi chương trình hoặc tập lệnh thực thi không có lỗi, nó trả về giá trị 0 để chỉ ra rằng nó đã kết thúc mà không có lỗi. Không phải tất cả các chương trình và kịch bản làm, nhưng họ nên.
Kiểm tra giá trị của $? sau khi chạy lệnh linux sẽ cho bạn biết nếu có lỗi hay không. Kiểm tra tài liệu của từng chương trình để biết giá trị trả về có thể là gì. Một số sẽ không trả lại một giá trị nhưng hầu hết làm. Trong tập lệnh của bạn, bạn nên kết thúc bằng 'return X' trong đó X là một số giá trị 0 = tốt / không có lỗi và bất cứ điều gì lớn hơn 0 chỉ ra một số vấn đề xảy ra. Ngay cả khi tất cả những gì bạn sử dụng là giá trị 0 hoặc 1, đó là cách thực hành tốt. Điều này cho phép các tập lệnh khác biết liệu dòng / lệnh tiếp theo sẽ được thực thi dựa trên thành công hay thất bại của lệnh cuối cùng. Nó làm cho kịch bản thông minh hơn và kiểm soát tốt hơn.
$?
để chỉ ra mã trả về của chương trình cuối cùng. Điều này bao gồm không chỉbash
mà còn vỏ Bourne tiêu chuẩn,ksh
,csh
, vàzsh
. Khá nhiều shell UNIX tồn tại đồng ý với cái này.