2013-08-08 40 views
9

Tôi có một tuyên bố nếu tôi cần chạy, miễn là giá trị tôi đã lưu trữ trong biến số $counter của mình lớn hơn 5.So sánh biến với số nguyên trong trình bao?

Đây là phần tương ứng của (không hoạt động) kịch bản hiện tại của tôi:

if $counter > 5 
then 
    echo "something" 
fi 

Sai lầm tôi đang làm có lẽ là rất rõ ràng, nhưng đối với một số lý do tôi không thể tìm ra giải pháp trực tuyến. Cảm ơn!

Trả lời

20

Vâng đó là khá đơn giản:

if [ "$counter" -gt 5 ] 
then 
    echo "something" 
fi 
+1

Trừ khi bạn cần khả năng tương thích 'sh', tốt hơn nên sử dụng' [['và']] 'thay vì' ['và'] '. Xem http://mywiki.wooledge.org/BashFAQ/031 – Thomas

+0

Tất nhiên. Nó có nghĩa là cho khả năng tương thích nhìn thấy rằng ông đã không đề cập đến bash trong tiêu đề. – konsolebox

+0

@ konsolebox, bạn cần xem các thẻ bên dưới câu hỏi. Tiêu đề thường rất gây hiểu nhầm. –

11

số học cần phải được thực hiện giữa (()):

if (($counter > 5)) 

Ngẫu nhiên, bạn cũng có thể rời khỏi $ trong số học, mặc dù nó không làm tổn thương để giữ nó.

+0

Có tuy nhiên, tôi sẽ tranh luận biểu thức có điều kiện nên được thực hiện trong '[[]]'. Vậy cái nào thực sự là nó? Tôi muốn chọn '[[]]'. Xem các đối số của tôi ở đây: http://stackoverflow.com/a/18568726/445221. (Nhận xét để tham khảo). – konsolebox

Các vấn đề liên quan