10 ví dụ về Bash cho vòng lặp có giải thích

Spread the love

For Loop là một phần không thể thiếu của bất kỳ ngôn ngữ lập trình nào. Nó cho phép các chương trình lặp lại qua một số mục nhất định.

Ví dụ: nếu bạn muốn xem qua một danh sách hoặc mảng ‘n’ mục, bạn sẽ sử dụng Vòng lặp for. Hãy lấy một ví dụ đơn giản:

Bảng 1Violet2Indigo3Blue4GreenRainbow

Để thực hiện bất kỳ hành động nào hoặc lặp lại các mục trong bảng trên, chúng tôi yêu cầu Vòng lặp Đối với.

Bash cho vòng lặp

Trong một tập lệnh bash, cú pháp For Loop như sau:

#!/bin/bash

for VAR in 1 2 3 4 5.....N

do

 ACTION 1

 ACTION 2

 .....

done

Bash For Loop khá đơn giản. Dòng đầu tiên #! / Bin / bash chỉ ra rằng mã là một tập lệnh bash. VAR là viết tắt của biến tạm thời được sử dụng Cho vòng lặp. N cho biết số lần lặp tối đa. “do” và “done” lần lượt bắt đầu và dừng Vòng lặp. Các hành động là các lệnh thực thi trong Vòng lặp.

Chúng ta có thể thực thi Bash For Loop với các biến khác nhau, như danh sách, chuỗi, số nguyên và mảng. Bài viết này sẽ đưa ra một vài ví dụ phổ biến về Bash For Loop.

Bạn có thể thực thi trực tiếp các chương trình này trên dòng lệnh bash hoặc lưu chúng trong một tệp và thực thi tệp bằng lệnh Bash filename.sh.

Đọc danh sách tĩnh

Hãy xem xét danh sách sau – RainbowColorList = Violet, Indigo, Blue, Green, Yellow, Orange, Red

Chúng ta có thể in danh sách chuỗi trên bằng cách sử dụng Bash For Loop như sau:

#! /bin/sh

# Define the list

rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red

# Comma separator pattern using //,/

for colors in ${rainbowColorList//,/ }

do

   echo $colors

done

Đầu ra sẽ là danh sách các mục trong một dòng mới.

#Output

Violet
Indigo
Blue
Green
Yellow
Orange
Red

Đọc một mảng

Cú pháp để khai báo một mảng là khác nhau. Sử dụng dấu ngoặc đơn cho mỗi phần tử (Chuỗi).

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

for colors in "${rainbowArray[@]}"; do

     echo "I like $colors"

done

‘@’ được sử dụng để lặp qua từng phần tử trong mảng.

#Output

I like Violet
I like Indigo
I like Blue
I like Green
I like Yellow
I like Orange
I like Red

Chúng ta cũng có thể sử dụng For Loop để in các chỉ mục và các phần tử của mảng.

#Printing with index

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

for i in "${!rainbowArray[@]}";

do

  echo "Color at index " $i " : " "${rainbowArray[$i]}"

  i=$((i+1));

done
#Output

Color at index 0 : Violet
Color at index 1 : Indigo
Color at index 2 : Blue
Color at index 3 : Green
Color at index 4 : Yellow
Color at index 5 : Orange
Color at index 6 : Red

Lưu ý rằng chúng tôi sử dụng ‘!’ trong Vòng lặp để lấy chỉ số phần tử.

  Cách cài đặt CuteFishOS

Lặp lại phạm vi số

Chúng ta có thể sử dụng Bash For Loop để lặp qua một loạt các số.

#iterating over range of numbers

echo "Countdown begins..."

for N in {10..0}

do

    echo "$N"

done

Dấu ‘..’ cho biết một dãy số.

#Output

10
9
8
7
6
5
4
3
2
1
0

Chúng tôi cũng có thể bỏ qua số đếm bằng cách chỉ định phạm vi.

Trong ví dụ dưới đây, chúng tôi bỏ qua việc đếm cho 3.

#iterating with skip counting

echo "Countdown begins..."

for N in {30..0..3}

do

    echo "$N"

done

Chương trình trên bắt đầu với 30 là số đầu tiên và đếm ngược đến 0. Tham số cuối cùng trong vòng lặp for ‘3’ chỉ định số đếm bỏ qua.

#Output

30
27
24
21
18
15
12
9
6
3
0

Chuỗi và ký tự

Chúng ta có thể thực hiện rất nhiều thao tác chuỗi thú vị với Bash For Loop.

Ví dụ: chúng ta có thể đọc từng ký tự của một chuỗi bằng cách sử dụng toán tử ‘seq’ trong For Loop:

#read characters of a string

myword="welcome"

for i in $(seq 1 ${#myword})

do

 echo "${myword:i-1:1}"

done

Lưu ý rằng ‘seq’ phải bắt đầu bằng 1 để lấy ký tự đầu tiên.

#Output

W
e
l
c
o
m
e

Chúng tôi cũng có thể in các chuỗi được phân tách bằng dấu cách từng cái một:

#read each word from a sentence

mysentence="Welcome to techpoe.com. One stop hub for all techies"

for word in $mysentence; do

    echo $word

done
#Output

Welcome 
to 
techpoe.com. 
One 
stop 
hub 
for 
all 
techies

Biểu thức

Tương tự như bất kỳ ngôn ngữ lập trình nào khác như Java, chúng ta có thể đặt các biểu thức bên trong Bash For Loop.

for (( var=10; var>=0; var-- ))

do 

  echo "Counting down...$var"

done
#Output

Counting down...10
Counting down...9
Counting down...8
Counting down...7
Counting down...6
Counting down...5
Counting down...4
Counting down...3
Counting down...2
Counting down...1
Counting down...0

Đọc đối số dòng lệnh

Để đọc từ các đối số dòng lệnh, chúng ta sử dụng lệnh ‘read’. Trong ví dụ dưới đây, chúng tôi sẽ lấy một vài số từ người dùng và in ra tổng bằng cách sử dụng Bash For Loop. Chúng tôi sử dụng biến tổng để lưu trữ tổng hoặc tổng trung gian và cuối cùng của các số.

read -a array -p "Enter the numbers you want to add:"

total=0

for i in ${array[@]}; do

  let total+=$i

done

echo "Sum of the numbers is: $total"

Đầu ra là:

#Output

Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73

Tìm số chẵn lẻ

Để tìm các số chẵn và lẻ từ 1 đến 10 (hoặc bất kỳ số N), chúng ta nên sử dụng điều kiện if cùng với Bash cho Vòng lặp. Để xác định một số chẵn, chúng ta sẽ chia số đó cho 2 và nếu phần dư là 0, thì phân loại nó thành số chẵn khác lẻ.

#declare the list where the even and odd numbers will be sorted and kept

evennum=""

oddnum=""

for (( i=1; i<=10; i++ ))

do

remainder=$(( $i % 2 ))

if [ $remainder -eq 0 ]; then

 evennum="$evennum $i "

else

 oddnum="$oddnum $i "

fi

done

echo "Even numbers are: "$evennum

echo "Odd numbers are: "$oddnum

Lưu ý rằng chúng tôi đưa ra phạm vi là 10 trong ví dụ trên. Chúng ta có thể thay đổi số này để nhận được số chẵn và lẻ giữa bất kỳ phạm vi nào. Bạn cũng có thể thử đọc số từ người dùng bằng lệnh ‘đọc’ mà chúng ta đã học trong phần trước.

#Output

Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9

Vòng lặp vô hạn

Infinity hay Vòng lặp vô hạn là một vòng lặp không ngừng thực thi và chương trình buộc phải dừng bằng cách sử dụng Ctrl + C. Chúng ta có thể dễ dàng tạo một vòng lặp vô hạn bằng cách sử dụng dấu ‘; ; ‘ toán tử bên trong vòng lặp for:

for (( ; ; ))

do

  echo "Welcome to techpoe.com"

done
#Output

Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
Welcome to techpoe.com
^C
$

Tuyên bố ngắt

Câu lệnh break được sử dụng để ngắt khỏi Vòng lặp khi điều kiện ‘nếu’ được thỏa mãn.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    break

  fi

  echo "Searching for Green, the color now is $color"

done

echo "I found my color $color"

Trong ví dụ này, chúng tôi đang cố gắng tìm màu xanh lá cây. Vòng lặp For lặp lại qua từng màu và khi màu xanh lục được tìm thấy, chương trình sẽ thoát ra khỏi Vòng lặp do câu lệnh break.

#Output

Searching for Green, the color now is Violet
Searching for Green, the color now is Indigo
Searching for Green, the color now is Blue
I found my color Green

Tiếp tục Tuyên bố

Tiếp tục được sử dụng để bỏ qua Vòng lặp hiện tại và chuyển sang Vòng tiếp theo dựa trên một điều kiện nhất định. Ví dụ: nếu bạn không muốn in màu ‘Xanh lục’ từ chương trình trước của chúng tôi, chúng ta có thể đặt tiếp tục và tất cả các màu khác ngoại trừ Xanh lục sẽ được hiển thị.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    continue

  fi

  echo "$color"

done
#Output

Violet
Indigo
Blue
Yellow
Orange
Red

Từ cuối cùng

Chúng tôi đã trình bày các cách sử dụng phổ biến nhất của Bash For Loop, sử dụng chuỗi, số nguyên, mảng và danh sách. Nếu bạn đang học Linux nhưng có máy Windows 10, bạn có thể sử dụng tính năng WSL và cài đặt Linux trên máy Windows của mình.

  Trạng thái Không hoạt động trên Bất hòa có nghĩa là gì?

Sau đó, bạn có thể sử dụng thiết bị đầu cuối Linux theo cách tương tự như CMD.

Tiếp theo, bạn có thể xem Làm thế nào để chạy các tập lệnh bash bằng Python?

x