Bash วนซ้ำผ่านรายการสตริง

Bash Loop Through List Strings



รายการสตริงหรืออาร์เรย์หรือลำดับขององค์ประกอบสามารถทำซ้ำได้โดยใช้ สำหรับ วนซ้ำในทุบตี วิธีทำซ้ำรายการสตริงใน Bash by for loop จะแสดงในบทช่วยสอนนี้โดยใช้ตัวอย่างสคริปต์ทุบตีต่างๆ หากคุณเป็นมือใหม่กำลังเขียนโปรแกรม bash คุณสามารถอ่านบทช่วยสอนได้ที่ BASH สำหรับตัวอย่างลูป ก่อนเริ่มบทช่วยสอนนี้

สร้างไฟล์ทุบตีชื่อ ' for_list1.sh ’ และเพิ่มสคริปต์ต่อไปนี้ ค่าสตริงที่มีช่องว่างถูกใช้ภายใน for loop โดยค่าเริ่มต้น ค่าสตริงจะถูกคั่นด้วยช่องว่าง For loop จะแยกสตริงออกเป็นคำและพิมพ์แต่ละคำโดยเพิ่มบรรทัดใหม่







#!/bin/bash
# อ่านสตริงที่มีช่องว่างโดยใช้ for loop
สำหรับค่าในฉันชอบเขียนโปรแกรม
ทำ
โยนออก $value
เสร็จแล้ว

เอาท์พุท:



$ทุบตีfor_list1.sh



ตัวอย่างที่ 2: การวนซ้ำตัวแปรสตริงโดยใช้ for loop

สร้างไฟล์ทุบตีชื่อ ' for_list2.sh ’ และเพิ่มสคริปต์ต่อไปนี้ กำหนดข้อความลงในตัวแปร StringVal และอ่านค่าของตัวแปรนี้โดยใช้ for loop ตัวอย่างนี้จะทำงานเหมือนตัวอย่างก่อนหน้านี้และแบ่งค่าของตัวแปรออกเป็นคำตามช่องว่าง





#!/bin/bash
# กำหนดตัวแปรสตริงด้วยค่า
StringVal='ยินดีต้อนรับสู่ linuxhint'

# วนซ้ำตัวแปรสตริงโดยใช้ for loop
สำหรับชั่วโมงใน $StringVal;ทำ
โยนออก $ ชั่วโมง
เสร็จแล้ว

เอาท์พุท:

$ทุบตีfor_list2.sh



ตัวอย่างที่ 3: วนซ้ำอาร์เรย์ของค่าสตริง

สร้างไฟล์ทุบตีชื่อ ' for_list3.sh ’ และเพิ่มสคริปต์ต่อไปนี้ อาร์เรย์ของค่าสตริงถูกประกาศด้วยประเภทในสคริปต์นี้ ค่าสองค่าในอาร์เรย์ที่มีช่องว่างคือ Linux Mint และ Red Hat Linux . สคริปต์นี้จะสร้างผลลัพธ์โดยแบ่งค่าเหล่านี้ออกเป็นหลายคำและพิมพ์เป็นค่าที่แยกจากกัน แต่นี่ไม่ใช่ผลลัพธ์ที่เหมาะสม วิธีแก้ปัญหาประเภทนี้แสดงในตัวอย่างถัดไป

#!/bin/bash

# ประกาศอาร์เรย์ของสตริงด้วย type
ประกาศ -ถึง StringArray=('ลินุกซ์ มิ้นท์' 'เฟโดร่า' 'เรดแฮทลินุกซ์' 'อูบุนตู' 'เดเบียน' )

# วนซ้ำอาร์เรย์สตริงโดยใช้ for loop
สำหรับชั่วโมงใน ${StringArray[@]};ทำ
โยนออก $ ชั่วโมง
เสร็จแล้ว

เอาท์พุท:

$ทุบตีfor_list3.sh

ตัวอย่างที่ 4: พิมพ์ค่าสตริงคำหลายคำเป็นค่าเดียว

สร้างไฟล์ทุบตีชื่อ ' for_list4.sh ’ และเพิ่มสคริปต์ต่อไปนี้ ในตัวอย่างนี้ ทุกองค์ประกอบของตัวแปรอาร์เรย์ StringArray มีค่าของสองคำ หากต้องการพิมพ์แต่ละค่าโดยไม่แยกและแก้ปัญหาของตัวอย่างก่อนหน้า คุณเพียงแค่ใส่ตัวแปรอาร์เรย์ด้วย ใบเสนอราคาคู่ ภายในสำหรับวง

#!/bin/bash

# ประกาศอาร์เรย์สตริงด้วย type
ประกาศ -ถึง StringArray=('วินโดวส์ XP' 'วินโดวส์ 10' 'วินโดวส์ ME' 'วินโดวส์ 8.1'
'Windows เซิร์ฟเวอร์ 2016' )

# อ่านค่าอาร์เรย์ด้วยช่องว่าง
สำหรับชั่วโมงใน '${StringArray[@]}';ทำ
โยนออก $ ชั่วโมง
เสร็จแล้ว

เอาท์พุท:

$ทุบตีfor_list4.sh

ตัวอย่างที่ 5: การวนซ้ำค่าสตริงของอาร์เรย์โดยใช้ '*'

สร้างไฟล์ทุบตีชื่อ ' for_list5.sh ’ ด้วยรหัสต่อไปนี้ ที่นี่ สัญลักษณ์ '*' ใช้เพื่ออ่านค่าสตริงทั้งหมดของอาร์เรย์ ส่วนแรกสำหรับลูปใช้เพื่อแสดงค่าอาร์เรย์ในหลายบรรทัด และส่วนที่สองสำหรับลูปใช้เพื่อแสดงค่าอาร์เรย์ในบรรทัดเดียว

#!/bin/bash

#ประกาศอาร์เรย์สตริง
LanguageArray=('PHP' 'จาวา' 'ค #' 'ซี ++' 'วีบีเน็ต' 'งูหลาม' 'เพิร์ล')

# พิมพ์ค่าอาร์เรย์ในบรรทัด
โยนออก 'พิมพ์ทุกองค์ประกอบในบรรทัดใหม่'
สำหรับval1ใน ${LanguageArray[*]};ทำ
โยนออก $ val1
เสร็จแล้ว

โยนออก ''

# พิมพ์ค่าอาร์เรย์ในหนึ่งบรรทัด
โยนออก 'พิมพ์องค์ประกอบทั้งหมดในบรรทัดเดียว'
สำหรับval2ใน '${LanguageArray[*]}';ทำ
โยนออก $val2
เสร็จแล้ว
โยนออก ''

เอาท์พุท:

$ทุบตีfor_list5.sh

ตัวอย่างที่ 6: การวนซ้ำค่าสตริงที่คั่นด้วยจุลภาค

สร้างไฟล์ทุบตีใหม่ชื่อ ' for_list6.sh' ด้วยรหัสต่อไปนี้ ที่นี่, จุลภาค (,) ใช้เพื่อแยกค่าสตริง ไอเอฟเอส ตัวแปรใช้เพื่อตั้งค่าตัวคั่นฟิลด์

#!/bin/bash
รายการข้อมูล=' HTML5, CCS3, BootStrap, JQuery '
Field_Separator=$IFS

# ตั้งค่าจุลภาคเป็นตัวคั่นฟิลด์ภายในสำหรับรายการสตริง
ไอเอฟเอส=,
สำหรับชั่วโมงใน $DataList;
ทำ
โยนออก $ ชั่วโมง
เสร็จแล้ว

ไอเอฟเอส=$Field_Separator

เอาท์พุท:

$ทุบตีfor_list6.sh

ตัวอย่างที่ 7: การอ่านอาร์เรย์สตริงหลายชุดพร้อมกัน

สร้างไฟล์ทุบตีชื่อ ' for_list7.sh ’ และเพิ่มสคริปต์ต่อไปนี้ ในตัวอย่างนี้ มีการกำหนดอาร์เรย์สตริงสองชุดและรวมกันเป็นอาร์เรย์อื่น วงนอกสำหรับลูปใช้เพื่ออ่านอาร์เรย์ที่รวมกันและวงในใช้เพื่ออ่านแต่ละอาร์เรย์ภายใน

#! /bin/sh
str_array1=('วีโอไอพี 2.2.4' 'วูคอมเมิร์ซ')
str_array2=('CodeIgnitor' 'ลาราเวล')
รวม=(str_array1 str_array2)
สำหรับจัดการใน ${รวม[@]}
ทำ
eval 'สำหรับค่าใน '${'$ arrItem'[@]}';do echo '$val';done'
เสร็จแล้ว

เอาท์พุท:

$ทุบตีfor_list7.sh

ตัวอย่างที่ 8: การใช้รูปแบบเพื่ออ่านรายการสตริง

สร้างไฟล์ทุบตีใหม่ชื่อ for_list8.sh ด้วยรหัสต่อไปนี้ ที่นี่, '/, /' รูปแบบใช้เพื่อแบ่งค่าสตริงตามเครื่องหมายจุลภาค

#! /bin/sh

# กำหนดรายการตัวแปรสตริง
stringList=WordPress,Joomla,Magento

# ใช้จุลภาคเป็นตัวคั่นและใช้เป็นรูปแบบ
สำหรับชั่วโมงใน ${stringList//,/ }
ทำ
โยนออก $ ชั่วโมง
เสร็จแล้ว

เอาท์พุท:

$ทุบตีfor_list8.sh

หวังว่า ตัวอย่างของบทช่วยสอนนี้จะช่วยให้คุณเข้าใจการใช้ สำหรับวง สำหรับการวนซ้ำรายการสตริง สำหรับวิดีโอในหัวข้อนี้ ดูด้านล่าง: