Friday, November 22, 2024

[Bash] Lesson 17 – Bash For Loop

-

Vòng lặp For trong Bash

Trong chủ đề này, chúng ta sẽ tìm hiểu cách sử dụng vòng lặp for trong các kịch bản Bash.

Giống như bất kỳ ngôn ngữ lập trình nào khác, shell script của bash cũng hỗ trợ ‘vòng lặp for’ để thực hiện các nhiệm vụ lặp lại. Nó giúp chúng ta lặp lại một tập hợp cụ thể các lệnh trên một loạt các từ trong một chuỗi hoặc các phần tử trong một mảng. Ví dụ, bạn có thể chạy lệnh (hoặc tác vụ) UNIX nhiều lần hoặc chỉ đơn giản là đọc và xử lý danh sách các lệnh bằng cách sử dụng ‘vòng lặp for’.

Cú pháp của For Loop

Chúng ta có thể áp dụng ‘vòng lặp for’ trong kịch bản bash theo hai cách. Một cách là ‘for-in’ và cách khác là cú pháp kiểu c. Sau đây là cú pháp của ‘vòng lặp for’ trong shell script của bash:

for variable in list  
do  
commands  
done  

Hoặc

for (( expression1; expression2; expression3 ))  
do  
commands  
done  

Dưới đây là vài điểm chính của câu lệnh ‘for loop’:

Mỗi khối của ‘for loop’ trong Bash bắt đầu bằng từ khóa ‘do’ theo sau là các lệnh trong khối. Câu lệnh ‘for loop’ được đóng bằng từ khóa ‘done’.
Số lần lặp của ‘for loop’ phụ thuộc vào các biến danh sách được khai báo.
Vòng lặp sẽ chọn một phần tử từ danh sách và gán giá trị cho một biến sẽ được sử dụng trong vòng lặp.
Sau khi thực thi các lệnh giữa ‘do’ và ‘done’, vòng lặp quay lại đầu và chọn phần tử tiếp theo trong danh sách và lặp lại toàn bộ quá trình.
Danh sách có thể chứa các số hoặc chuỗi vv, được phân tách bởi dấu cách.
Dưới đây là một số ví dụ về ‘for loop’ để minh họa cách thức hoạt động của chúng:

Ví dụ về ‘For Loop’ Cơ bản:

#!/bin/bash  
#This is the basic example of 'for loop'.  
  
learn="Start learning from Javatpoint."  
  
for learn in $learn  
do  
echo $learn  
done  
  
echo "Thank You."  

Kết quả

Vòng lặp for để đọc một phạm vi

Đoạn mã Bash:

#!/bin/bash  
#This is the basic example to print a series of numbers from 1 to 10.  
  
for num in {1..10}  
do  
echo $num  
done  
  
echo "Series of numbers from 1 to 10."  

Kết quả

Vòng lặp For để đọc một phạm vi với tăng/giảm

Chúng ta có thể tăng hoặc giảm một giá trị đã xác định bằng cách thêm hai dấu chấm (..) và giá trị để tăng lên, ví dụ: {START..END..INCREMENT}. Xem ví dụ bên dưới:

Đối với tăng lên:

#!/bin/bash  
  
#For Loop to Read a Range with Increment  
  
for num in {1..10..1}  
do  
echo $num  
done  

Kết quả

Giảm xuống

#!/bin/bash  
  
#For Loop to Read a Range with Decrement  
  
for num in {10..0..1}  
do  
echo $num  
done  

Kết quả

Vòng lặp ‘for’ để đọc các biến mảng:

Chúng ta có thể sử dụng vòng lặp ‘for’ để lặp lại các giá trị của một mảng. Cú pháp có thể được định nghĩa như sau:

array=(  "element1" "element 2" .  .  "elementN" )  
  
for i in "${arr[@]}"  
do  
echo $i  
done  

Đầu tiên, chúng ta đã khai báo một mảng chứa một số giá trị bất kỳ. Tiếp theo, chúng ta đã sử dụng vòng lặp ‘for’ để lặp lại các giá trị của mảng. Vòng lặp được khởi tạo bằng cách sử dụng cú pháp “for i in ${array[@]}” trong đó i là biến chứa giá trị của từng phần tử trong mảng. Sau đó, các lệnh được thực thi trong khối ‘do’-‘done’ với giá trị của i được sử dụng để tham chiếu đến từng phần tử của mảng. Kết quả của mỗi phần tử được in ra màn hình bởi lệnh ‘echo’.

#!/bin/bash  
  
#Array Declaration  
arr=( "Welcome""to""Javatpoint" )  
  
for i in "${arr[@]}"  
do  
echo $i  
done 

Kết quả

Vòng lặp ‘for’ để đọc các khoảng trắng trong chuỗi làm phân tách từ Cú pháp có thể được xác định như sau:

#!/bin/bash  
  
for word in $str;  
do  
<Statements>  
done  

Ở đây, str đề cập đến một chuỗi.

Các lệnh từ ‘do’ đến ‘done’ được thực thi cho mỗi ‘từ’ trong chuỗi. Hãy xem ví dụ dưới đây:

Kịch bản Bash:

#!/bin/bash  
#For Loop to Read white spaces in String as word separators  
  
str="Let's start  
learning from Javatpoint."  
  
for i in $str;  
do  
echo "$i"  
done  

Kết quả

Vòng lặp For để đọc mỗi dòng trong chuỗi như một từ. Cú pháp có thể được định nghĩa như sau:

#!/bin/bash  
  
for word in "$str";  
do  
<Statements>  
done  

Ở đây, str đề cập đến một chuỗi.

Các câu lệnh từ ‘do’ đến ‘done’ được thực thi cho mỗi ‘dòng’ của chuỗi. Hãy xem ví dụ bên dưới:

Đoạn mã Bash:

#!/bin/bash  
#For Loop to Read each line in String as a word  
  
str="Let's start  
learning from   
Javatpoint."  
  
for i in "$str";  
do  
echo "$i"  
done  

Kết quả

Chú ý: Sự khác biệt duy nhất giữa ‘For Loop to Read white spaces in String as word separators’ và ‘For Loop to Read each line in String as a word’ là dấu ngoặc kép xung quanh biến chuỗi.

Vòng lặp For để đọc ba biểu thức
Cú pháp ba biểu thức là cú pháp vòng lặp ‘for’ phổ biến nhất. Biểu thức đầu tiên tham chiếu đến quá trình khởi tạo, biểu thức thứ hai tham chiếu đến điều kiện dừng, và biểu thức thứ ba tham chiếu đến sự tăng hoặc giảm.

Kiểm tra ví dụ bên dưới để in các số từ 1 đến 10 sử dụng ba biểu thức với vòng lặp ‘for’:

#!/bin/bash  
#For Loop to Read Three-expression  
  
for ((i=1; i<=10; i++))  
do  
echo "$i"  
done  

Kết quả

Vòng lặp ‘for’ với câu lệnh ‘break’ Câu lệnh ‘break’ có thể được sử dụng trong vòng lặp ‘for’ để thoát khỏi vòng lặp.

#!/bin/bash  
#Table of 2  
  
for table in {2..100..2}  
do  
echo $table  
if [ $table == 20 ]; then  
break  
fi  
done  

Kết quả

Vòng lặp ‘for’ với lệnh ‘continue’.

Chúng ta có thể sử dụng lệnh ‘continue’ bên trong vòng lặp ‘for’ để bỏ qua bất kỳ lệnh nào trong một điều kiện cụ thể. Nó báo cho Bash dừng thực thi vòng lặp của phần tử đó và thực thi phần tử của vòng lặp tiếp theo.

Kịch bản Bash:

#!/bin/bash  
#Numbers from 1 to 20, ignoring from 6 to 15 using continue statement"  
  
for ((i=1; i<=20; i++));  
do  
if [[ $i -gt 5 && $i -lt 16 ]];  
then  
continue  
fi  
echo $i  
done  

Kết quả

Vòng lặp for vô hạn trong Bash được tạo ra khi không có ‘start, condition và increment’ trong ba biểu thức của vòng lặp for. Để kết thúc vòng lặp vô hạn trong Bash, chúng ta có thể nhấn Ctrl+C.

Bash Script (đoạn mã vòng lặp for vô hạn):

#!/bin/bash  
  
i=1;  
for (( ; ; ))  
do  
sleep 1s  
echo "Current Number: $((i++))"  
done  

Kết quả

Kết luận

Trong chủ đề này, chúng ta đã thảo luận về cách sử dụng câu lệnh for loop trong Bash để thực hiện các nhiệm vụ cụ thể.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories