2012-04-05 35 views
14

thể trùng lặp:
What does “$?” give us exactly in a shell script?

không $? có ý nghĩa gì trong một kịch bản bash? Ví dụ dưới đây:

#!/bin/bash 
# userlist.sh 

PASSWORD_FILE=/etc/passwd 
n=1   # User number 

for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE") 

do 
    echo "USER #$n = $name" 
    let "n += 1" 
done 

exit $? 
+1

Trạng thái trả về/thoát của lệnh được thực hiện gần đây nhất. –

+1

Ah xin lỗi vì trùng lặp. "$?" khó tìm kiếm. – Meekohi

Trả lời

17
$? 

là lỗi cuối cùng (hoặc thành công) trả về:

$? 
1: command not found. 
echo $? 
127 

false 
echo $? 
1 

true 
echo $? 
0 

Các lối ra cuối cùng:

exit $? 

là không cần thiết, bởi vì kịch bản bash sẽ thoát với trạng thái đó. Trích dẫn trang người đàn ông:

Trạng thái thoát của Bash là trạng thái thoát của lệnh cuối cùng được thực hiện trong tập lệnh.

+0

Cảm ơn bạn đã thêm rằng thoát $? là thừa. – trueCamelType