2010-02-01 16 views

Trả lời

9

Sử dụng $?, nó chứa các lệnh cuối cùng Mã trả về

EDIT: thí dụ rõ ràng:

git status >& /dev/null 
if [ $? -eq 0 ]; then 
    echo "git status exited successfully" 
else 
    echo "git status exited with error code" 
fi 
+1

* ho * '&>' không '> &' –

+0

@Phil - bạn đã thử chạy '> &' chưa? – orip

+0

Ồ đúng, quên,> & không làm việc, đôi khi, tùy thuộc vào mức độ mơ hồ của cú pháp - đó là một thói quen xấu, mặc dù, và tốt hơn để sử dụng &> không mơ hồ. Lấy làm tiếc. –

17

Đơn giản chỉ cần như thế

if git status &> /dev/null 
then 
    echo "is a git repo"; 
else 
    echo "is not a git repo"; 
fi 

Hoặc trong một nhỏ gọn hơn biểu mẫu:

git status &> /dev/null && echo "is a git repo" || echo "is not a git repo" 
0

hình thức khác mà tôi thường sử dụng như sau:

git status &> /dev/null 
if (($?)) then 
    ... 

này là hơi nhỏ gọn hơn các câu trả lời được chấp nhận, nhưng nó không yêu cầu bạn phải đặt lệnh trên cùng một dòng như trong của gregseth câu trả lời (đôi khi là những gì bạn muốn, nhưng đôi khi trở nên quá khó đọc).

Dấu ngoặc kép cho biểu thức toán học trong zsh. (Ví dụ: xem here.)