Tôi có một kịch bản để kiểm tra trạng thái thoát của hàm sau:Làm cách nào để kiểm tra trạng thái thoát khác của lệnh trong Bash?
function is_git_repository {
git branch &> /dev/null
}
nào trả 0
nếu bạn đang ở trong một repo git, và 128
nếu bạn không.
Tôi không có sự cố kiểm tra để xem liệu giá trị trả lại có là 0
hay không; các công việc sau như mong đợi:
if is_git_repository ; then
echo you are in a git repo
else
echo you are NOT in a git repo
fi
Nhưng đó là khi tôi đang cố gắng để kiểm tra cho một trạng thái thoát đó là bất cứ điều gì khác hơn là 0
khi tôi đang chạy vào vấn đề. Tôi đã thử những điều sau đây, nhưng không ai trong số họ làm việc:
if [[ "$(is_git_repository)" != "0" ]] ; ...
luôn trả về true (link)if [[ "$(is_git_repository)" -ne "0" ]] ; ...
luôn là falseif [[ "$(is_git_repository)" != 0 ]] ; ...
luôn trả về trueif [[ "$(is_git_repository)" -ne 0 ]] ; ...
luôn đánh giá falseif [[ ! "$(is_git_repository)" ]] ; ...
luôn luôn đánh giá là đúngif !is_git_repository ; ...
chỉ lặp lại c ommand trở lại với tôi, nhưng không có bang (wtf?)
Cách chính xác để kiểm tra trạng thái thoát khác của lệnh trong câu lệnh if là gì?
Bạn dường như đang tìm kiếm $? – devnull
"Nguồn" bạn đã liên kết đến không phải là câu trả lời được chấp nhận cũng như không được bình chọn cao nhất cho câu hỏi. –