2011-11-30 31 views
11

Tôi đang làm việc trên một tập lệnh sh trong đó tôi đang ở trong một vòng lặp WHILE trong đó một biến được tăng lên mỗi lần lặp lại và tôi muốn lưu một tệp theo năm lần lặp.Tính modulo trong kịch bản sh

Điều tôi thường làm (nói trong C) là làm bài kiểm tra if (n % 5 == 0), nhưng tôi không biết liệu điều đó có khả thi ở đây không ..? Nếu nó không phải là, không ai có bất kỳ ý tưởng mà sẽ có được công việc làm?

Chúc mừng!

Trả lời

16

Bạn nên sử dụng bc khi làm toán trong vỏ

if [ `echo "3 % 2" | bc` -eq 0 ] 
25

Nếu sh của bạn thực sự là sh và không chỉ bash được chạy như sh thì điều này sẽ chỉ làm việc tốt

if [ `expr $n % 5` -eq 0 ] 
then 
    # do something 
fi 

Nếu sh của bạn thực sự là bash sau đó đặt thử nghiệm của bạn trong (()) như vậy

if (($n % 5 == 0)) 
then 
    # do something 
fi 
Các vấn đề liên quan