Unix / Linux - Các loại vòng lặp Shell

Trong chương này, chúng ta sẽ thảo luận về các vòng lặp shell trong Unix. Vòng lặp là một công cụ lập trình mạnh mẽ cho phép bạn thực hiện nhiều lần một nhóm lệnh. Trong chương này, chúng ta sẽ xem xét các loại vòng lặp sau có sẵn cho các lập trình viên shell:

  • Vòng lặp while
  • Vòng lặp for
  • Vòng lặp cho đến khi
  • Vòng lặp chọn

Bạn sẽ sử dụng các vòng lặp khác nhau dựa trên tình huống. Ví dụ,whilevòng lặp thực hiện các lệnh đã cho cho đến khi điều kiện đã cho vẫn đúng; cácuntil vòng lặp thực hiện cho đến khi một điều kiện nhất định trở thành đúng.

Một khi bạn có thực hành lập trình tốt, bạn sẽ có được kiến ​​thức chuyên môn và do đó, bắt đầu sử dụng vòng lặp thích hợp dựa trên tình huống. Đây,whilefor vòng lặp có sẵn trong hầu hết các ngôn ngữ lập trình khác như C, C++PERL, Vân vân.

Vòng lặp làm tổ

Tất cả các vòng lặp đều hỗ trợ khái niệm lồng nhau, có nghĩa là bạn có thể đặt một vòng lặp bên trong một vòng lặp khác tương tự hoặc các vòng lặp khác nhau. Việc làm tổ này có thể lên đến số lần không giới hạn dựa trên yêu cầu của bạn.

Đây là một ví dụ về lồng ghép whilevòng. Các vòng khác có thể được lồng vào nhau dựa trên yêu cầu lập trình theo cách tương tự:

Lồng trong khi vòng lặp

Có thể sử dụng vòng lặp while như một phần của phần thân của vòng lặp while khác.

Cú pháp

while command1 ; # this is loop1, the outer loop
do
   Statement(s) to be executed if command1 is true

   while command2 ; # this is loop2, the inner loop
   do
      Statement(s) to be executed if command2 is true
   done

   Statement(s) to be executed if command1 is true
done

Thí dụ

Đây là một ví dụ đơn giản về lồng vòng lặp. Hãy thêm một vòng lặp đếm ngược khác bên trong vòng lặp mà bạn đã từng đếm đến chín -

#!/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

Điều này sẽ tạo ra kết quả sau. Điều quan trọng cần lưu ý làecho -nhoạt động ở đây. Đây-n tùy chọn cho phép echo tránh in một ký tự dòng 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