Vòng lặp là công cụ chương trình có tính năng mạnh, cho phép bạn có thể lặp lại một tập hợp các lệnh. Trong chương này, bạn sẽ tìm hiểu qua các ví dụ thực hành về vòng lặp có trong các chương trình shell.
Bạn sẽ sử dụng các vòng lặp khác nhau trên cơ sở các tình huống khác nhau. Ví dụ, vòng lặp while sẽ chạy lệnh đã cho tới khi điều kiện đã cho vẫn còn đúng, trong khi đó vòng lặp until sẽ chạy tới khi điều kiện đã cho trở nên đúng.
Một khi bạn có các bài thực hành chương trình tốt, bạn sẽ bắt đầu sử dụng vòng lặp thích hợp trên cơ sở tình huống đã cho. Ở đây, vòng lặp while và for là có sẵn trong hầu hết các ngôn ngữ chương trình khác như C, C++ và PERL etc.
Lồng các vòng lặp trong Unix/Linux
Tất cả các vòng lặp hỗ trợ khái niệm lồng, có nghĩa là bạn có thể đặt một vòng lặp vào bên trong một vòng lặp tương tự hoặc các vòng lặp khác. Việc lồng này có thể không giới hạn số lượng tối đa vòng lặp, nó phụ thuộc vào yêu cầu của bạn.
Dưới đây là ví dụ của lồng vòng lặp while, và theo cách tương tự, các vòng lặp khác có thể được lồng tùy theo yêu cầu chương trình.
Lồng vòng lặp while trong Unix/Linux
Nó là có thể để sử dụng vòng lặp while như là một phần của thân của một vòng lặp while khác.
Cú pháp:
while command1 ; # Day la vong lap thu nhat, la vong lap ben ngoai
do
Cac lenh de thuc thi neu command1 la true
while command2 ; # Day la vong lap thu hai, la vong lap ben trong
do
Cac lenh de thuc thi neu command2 la true
done
Cac lenh de thuc thi neu command1 la true
done
Ví dụ:
Sau đây là ví dụ đơn giản của lồng vòng lặp:
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # this is loop1
do
b="$a"
while [ "$b" -ge 0 ] # this is loop2
do
echo -n "$b "
b=`expr $b - 1`
done
echo
a=`expr $a + 1`
done
Nó tạo ra kết quả sau. Nó là quan trọng để ghi nhớ cách echo -n làm việc ở đây. Tại đây tùy chọn -n cho phép echo tránh việc in một dòng ký tự mới.
0 1 0 2 1 0 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
Theo Tutorialspoint
Bài trước: Điều khiển luồng trong Shell
Bài tiếp: Điều khiển vòng lặp trong Unix/Linux