Câu hỏi Ý nghĩa của $? trong shell script


Cái gì

echo $?

có nghĩa là trong lập trình bash?


76
2017-08-30 18:33


gốc


Unix trong một Nutshell là một ấn phẩm cũng đáng mua trong quan điểm của tôi. - wberry


Các câu trả lời:


Đây là trạng thái thoát của lệnh được thực thi cuối cùng.

Ví dụ lệnh true luôn trả về trạng thái 0 và false luôn trả về trạng thái 1:

true
echo $? # echoes 0
false
echo $? # echoes 1

Từ hướng dẫn sử dụng: (acessible bằng cách gọi man bash trong vỏ của bạn)

$?Mở rộng đến trạng thái thoát của đường ống nền trước được thực thi gần đây nhất.

Theo quy ước, trạng thái thoát của 0 có nghĩa là thành công, và tình trạng trả về khác không có nghĩa là thất bại. Học nhiều hơn về trạng thái thoát  trên wikipedia.

Có các biến đặc biệt khác như thế này, như bạn có thể thấy trong hướng dẫn trực tuyến này: https://www.gnu.org/s/bash/manual/bash.html#Special-Parameters


92
2017-08-30 18:35





$? trả về giá trị thoát của lệnh được thực thi cuối cùng. echo $? in giá trị đó trên bảng điều khiển. số không ngụ ý việc thực thi thành công trong khi các giá trị khác không được ánh xạ tới nhiều lý do khác nhau cho sự thất bại.

Do đó khi kịch bản; Tôi có xu hướng sử dụng cú pháp sau

if [ $? -eq 0 ]; then
 # do something
else
 # do something else
fi

So sánh được thực hiện bằng 0 hoặc không bằng 0


6
2017-12-16 09:21





Nó có mã trạng thái cuối cùng (giá trị thoát) của một lệnh.


5
2017-08-30 18:35





echo $? - Cung cấp cho EXIT STATUS của lệnh được thực hiện gần đây nhất . TÌNH TRẠNG EXIT này có lẽ sẽ là một con số với ZERO ngụ ý Sự thành công và bất kỳ giá trị NON-ZERO nào Thất bại

?  - Đây là một tham số / biến đặc biệt trong bash.

$? - Nó cung cấp giá trị được lưu trữ trong biến "?".

Một số thông số đặc biệt tương tự trong BASH là 1,2, *, # (Thường thấy trong lệnh echo là $ 1, $ 2, $ *, $ #, v.v ...).

Hi vọng điêu nay co ich....


4
2017-10-19 19:18





Từ http://www.gnu.org/s/bash/manual/bash.html#Special-Parameters

?
Expands to the exit status of the most recently executed foreground pipeline. 

2
2017-08-30 18:36





Xuất kết quả của lệnh unix được thực thi cuối cùng

0 implies true
1 implies false

1
2018-03-17 07:06





Xem Sổ tay Bash Dưới 3.4.2 Tham số đặc biệt:

? - Mở rộng đến trạng thái thoát của đường ống nền trước được thực thi gần đây nhất.

Đó là một chút khó tìm bởi vì nó không được liệt kê là $? (tên biến là "chỉ" ?). Xem thêm trạng thái thoát phần, tất nhiên ;-)

Chúc mừng mã hóa.


0
2017-08-30 18:39