Unix Linux - Thay thế Shell

Trong chương này, sẽ hiểu về việc ra quyết định shell trong Unix. Trong khi viết kịch bản shell, có thể có một tình huống khi bạn cần sử dụng một đường dẫn trong số hai đường dẫn đã cho. Vì vậy, bạn cần sử dụng các câu lệnh điều kiện cho phép chương trình của bạn đưa ra quyết định chính xác và thực hiện các hành động đúng.

Unix Shell hỗ trợ các câu lệnh có điều kiện được sử dụng để thực hiện các hành động khác nhau dựa trên các điều kiện khác nhau. Bây giờ chúng ta sẽ hiểu hai tuyên bố ra quyết định ở đây –

  • Câu lệnh if … else
  • Trường hợp … câu lệnh esac

Câu lnh if … else

Các câu lệnh if else là các câu lệnh ra quyết định hữu ích có thể được sử dụng để chọn một tùy chọn từ một tập hợp các tùy chọn nhất định.

Unix Shell hỗ trợ các dạng lệnh if… else sau :

  • câu lệnh if … fi
  • câu lệnh if … else … fi
  • câu lệnh if … elif … else … fi

Hầu hết các câu lệnh if kiểm tra quan hệ bằng cách sử dụng các toán tử quan hệ đã thảo luận trong chương trước.

Trường hp … Tuyên b esac

Bạn có thể sử dụng nhiều câu lệnh if … elif để thực hiện một nhánh multiway. Tuy nhiên, đây không phải lúc nào cũng là giải pháp tốt nhất, đặc biệt là khi tất cả các nhánh phụ thuộc vào giá trị của một biến duy nhất.

Unix Shell hỗ trợ câu lệnh case … esac xử lý chính xác tình huống này và nó hoạt động hiệu quả hơn các câu lệnh if … elif lặp lại .

Chỉ có một dạng câu lệnh case … esac đã được mô tả chi tiết ở đây –

  • case … câu lệnh esac

Câu lệnh case … esac trong Unix shell rất giống với câu lệnh switch … case mà chúng ta có trong các ngôn ngữ lập trình khác như C hoặc C ++ và PERL , v.v.

Unix / Linux – Các loại Shell Loop

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 lặp đi lặp lại 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ụ, vòng lặp while thực hiện các lệnh đã cho cho đến khi điều kiện đã cho vẫn đúng; vòng lặp cho đến khi 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, các vòng lặp while và for có sẵn trong hầu hết các ngôn ngữ lập trình khác như C , C ++ và PERL , v.v.

Vòng lp làm t

Tất cả các vòng lặp đều hỗ trợ khái niệm lồng nhau, 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 vòng lặp while . 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ự –

Lng trong khi vòng lp

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à cách hoạt động của echo -n ở đây. Tùy chọn Here -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

Unix / Linux – Kiểm soát vòng lặp Shell


Trong chương này, chúng ta sẽ thảo luận về điều khiển vòng lặp shell trong Unix. Cho đến nay, bạn đã xem xét việc tạo vòng lặp và làm việc với các vòng lặp để hoàn thành các nhiệm vụ khác nhau. Đôi khi bạn cần dừng một vòng lặp hoặc bỏ qua các lần lặp lại của vòng lặp.

Trong chương này, chúng ta sẽ tìm hiểu hai câu lệnh sau được sử dụng để điều khiển các vòng lặp

  • Tuyên bố ngắt
  • Tuyên bố tiếp tục

Vòng lp vô hn

Tất cả các vòng lặp đều có tuổi thọ giới hạn và chúng xuất hiện khi điều kiện là sai hoặc đúng tùy thuộc vào vòng lặp.

Một vòng lặp có thể tiếp tục mãi mãi nếu điều kiện bắt buộc không được đáp ứng. Một vòng lặp thực thi mãi mãi mà không kết thúc thực thi trong một số lần vô hạn. Vì lý do này, các vòng lặp như vậy được gọi là vòng lặp vô hạn.

Thí d

Đây là một ví dụ đơn giản sử dụng vòng lặp while để hiển thị các số từ 0 đến 9 –

#!/bin/sh

a=10

until [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

Vòng lặp này tiếp tục mãi mãi vì a luôn lớn hơn hoặc bằng 10 và nó không bao giờ nhỏ hơn 10.

Tuyên b ngh

Câu lệnh break được sử dụng để chấm dứt việc thực thi toàn bộ vòng lặp, sau khi hoàn thành việc thực thi tất cả các dòng mã cho đến câu lệnh break. Sau đó, nó bước xuống mã sau khi kết thúc vòng lặp.

Cú pháp

Câu lệnh break sau được sử dụng để thoát ra khỏi vòng lặp:

break

Lệnh break cũng có thể được sử dụng để thoát khỏi vòng lặp lồng nhau bằng cách sử dụng định dạng này:

break n

Ở đây n chỉ định vòng lặp bao quanh thứ n cho lối ra từ.

Thí d

Đây là một ví dụ đơn giản cho thấy rằng vòng lặp kết thúc ngay sau khi a trở thành 5 –

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

Khi thực hiện, bạn sẽ nhận được kết quả sau:

0
1
2
3
4
5

Đây là một ví dụ đơn giản về vòng lặp for lồng nhau. Tập lệnh này thoát ra khỏi cả hai vòng lặp nếu var1 bằng 2 và var2 bằng 0 –

#!/bin/sh

for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

Khi thực hiện, bạn sẽ nhận được kết quả sau. Trong vòng lặp bên trong, bạn có lệnh break với đối số 2. Điều này chỉ ra rằng nếu một điều kiện được đáp ứng, bạn nên thoát ra khỏi vòng lặp bên ngoài và cuối cùng là từ vòng lặp bên trong.

1 0
1 5

Tuyên b tiếp tc

Câu lệnh continue tương tự như lệnh break , ngoại trừ việc nó làm thoát lần lặp hiện tại của vòng lặp, thay vì toàn bộ vòng lặp.

Câu lệnh này hữu ích khi có lỗi xảy ra nhưng bạn muốn thử thực hiện lần lặp tiếp theo của vòng lặp.

Cú pháp

continue

Giống như với câu lệnh break, một đối số số nguyên có thể được cấp cho lệnh continue để bỏ qua các lệnh từ các vòng lặp lồng nhau.

continue n

Ở đây n chỉ định vòng lặp thứ n để tiếp tục.

Thí d

Vòng lặp sau sử dụng câu lệnh continue trả về từ câu lệnh continue và bắt đầu xử lý câu lệnh tiếp theo:

#!/bin/sh

NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

Khi thực hiện, bạn sẽ nhận được kết quả sau:


Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number

Unix / Linux – Thay thế Shell (xem thêm)

Để lại một bình luận