Bash Range: วิธีวนซ้ำลำดับที่สร้างบนเชลล์

Bash Range How Iterate Over Sequences Generated Shell



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

ตัวเลือกของคำสั่ง seq:

คุณสามารถใช้ได้ seq คำสั่งโดยใช้ตัวเลือกต่อไปนี้







-ใน

ตัวเลือกนี้ใช้เพื่อเติมตัวเลขที่มีศูนย์นำหน้าเพื่อพิมพ์ตัวเลขทั้งหมดที่มีความกว้างเท่ากัน



-f รูปแบบ

ตัวเลือกนี้ใช้เพื่อพิมพ์ตัวเลขที่มีรูปแบบเฉพาะ ตัวเลขลอยตัวสามารถจัดรูปแบบได้โดยใช้ %f, %g และ %e เป็นอักขระการแปลง %g ถูกใช้เป็นค่าเริ่มต้น



-s สตริง

ตัวเลือกนี้ใช้เพื่อแยกตัวเลขด้วยสตริง ค่าเริ่มต้นคือขึ้นบรรทัดใหม่ (' n')





ตัวอย่างของคำสั่ง seq:

คุณสามารถใช้คำสั่ง seq ได้สามวิธี คุณสามารถใช้ได้เฉพาะขีดจำกัดบน หรือขีดจำกัดบนและล่าง หรือขีดจำกัดบนและล่าง โดยมีค่าเพิ่มขึ้นหรือลดลงของแต่ละขั้นตอน การใช้งานที่แตกต่างกันของคำสั่ง seq พร้อมตัวเลือกจะแสดงในตัวอย่างต่อไปนี้

ตัวอย่างที่ 1: คำสั่ง seq โดยไม่มีตัวเลือก

เมื่อใช้เฉพาะขีดจำกัดบน ตัวเลขจะเริ่มต้นจาก 1 และเพิ่มขึ้นทีละหนึ่งในแต่ละขั้นตอน คำสั่งต่อไปนี้จะพิมพ์ตัวเลขตั้งแต่ 1 ถึง 4



$seq 4

เอาท์พุท:

เมื่อใช้ค่าสองค่ากับคำสั่ง seq ค่าแรกจะถูกใช้เป็นตัวเลขเริ่มต้น และค่าที่สองจะใช้เป็นตัวเลขลงท้าย คำสั่งต่อไปนี้จะพิมพ์ตัวเลขตั้งแต่ 7 ถึง 15

$seq 7 สิบห้า

เอาท์พุท:

เมื่อคุณจะใช้สามค่าด้วยคำสั่ง seq ค่าที่สองจะถูกใช้เป็นค่าส่วนเพิ่มหรือค่าลดสำหรับแต่ละขั้นตอน สำหรับคำสั่งต่อไปนี้ หมายเลขเริ่มต้นคือ 10 หมายเลขสิ้นสุดคือ 1 และแต่ละขั้นตอนจะถูกนับโดยลดลง 2

$seq 10 -2 1

เอาท์พุท:

ตัวอย่างที่ 2: ลำดับด้วย –w ตัวเลือก

คำสั่งต่อไปนี้จะพิมพ์ผลลัพธ์โดยการเพิ่มศูนย์นำหน้าสำหรับตัวเลขตั้งแต่ 1 ถึง 9

$seq -ใน0110

เอาท์พุท:

ตัวอย่างที่ 3: ลำดับด้วย –s ตัวเลือก

คำสั่งต่อไปนี้ใช้ - เป็นตัวคั่นสำหรับแต่ละหมายเลขลำดับ ลำดับของตัวเลขจะพิมพ์โดยการเพิ่ม - เป็นตัวคั่น

$seq -NS-8

เอาท์พุท:

ตัวอย่างที่ 4: seq ด้วย -f option

คำสั่งต่อไปนี้จะพิมพ์ค่าวันที่ 10 วันที่เริ่มต้นจาก 1 ในที่นี้ ตัวเลือก %g จะใช้เพื่อเพิ่มหมายเลขลำดับด้วยค่าสตริงอื่นๆ

$seq -NS '%g/04/2018' 10

เอาท์พุท:

Bash Range

คำสั่งต่อไปนี้ใช้เพื่อสร้างลำดับของเลขทศนิยมโดยใช้ %f ที่นี่ตัวเลขจะเริ่มต้นจาก 3 และเพิ่มขึ้นทีละ 0.8 ในแต่ละขั้นตอนและตัวเลขสุดท้ายจะน้อยกว่าหรือเท่ากับ 6

$seq -NS '%NS' 3 0.8 6

เอาท์พุท:

ตัวอย่างที่-5: เขียนลำดับในไฟล์

หากคุณต้องการบันทึกลำดับของตัวเลขลงในไฟล์โดยไม่ต้องพิมพ์ในคอนโซล คุณสามารถใช้คำสั่งต่อไปนี้ได้ คำสั่งแรกจะพิมพ์ตัวเลขไปยังไฟล์ชื่อ seq.txt . จำนวนจะสร้างจาก 5 ถึง 20 และเพิ่มขึ้น 10 ในแต่ละขั้นตอน คำสั่งที่สองใช้เพื่อดูเนื้อหาของ seq.txt ไฟล์.

$ seq 5 10 20 | แมว > seq.txt
$ cat seq.txt

เอาท์พุท:

ตัวอย่างที่ 6: การใช้ seq in for loop

สมมติว่าคุณต้องการสร้างไฟล์ชื่อ fn1 ถึง fn10 โดยใช้ for loop กับ seq สร้างไฟล์ชื่อ sq1.bash และเพิ่มรหัสต่อไปนี้ For loop จะวนซ้ำ 10 ครั้งโดยใช้คำสั่ง seq และสร้าง 10 ไฟล์ตามลำดับ fn1, fn2,fn3…..fn10

#!/bin/bash
สำหรับผมใน ``seq 10``
ทำ
สัมผัสฟน.$i
เสร็จแล้ว

เอาท์พุท:

รันคำสั่งต่อไปนี้เพื่อรันโค้ดของไฟล์ bash และตรวจสอบว่าไฟล์ถูกสร้างขึ้นหรือไม่

$ทุบตีsq1.bash
$ลส

ตัวอย่าง for loop with range:

ตัวอย่างที่ 7: สำหรับลูปที่มี range

ทางเลือกของคำสั่ง seq คือช่วง คุณสามารถใช้ range in for loop เพื่อสร้างลำดับของตัวเลข เช่น seq เขียนรหัสต่อไปนี้ในไฟล์ทุบตีชื่อ sq2.bash . การวนซ้ำจะวนซ้ำ 5 ครั้งและพิมพ์รากที่สองของแต่ละตัวเลขในแต่ละขั้นตอน

#!/bin/bash
สำหรับNSใน {1..5}
ทำ
((ผลลัพธ์= น*NS))
โยนออก $n สี่เหลี่ยม=$ผลลัพธ์
เสร็จแล้ว

เอาท์พุท:

รันคำสั่งเพื่อรันสคริปต์ของไฟล์

$ทุบตีsq2.bash

ตัวอย่างที่ 8: สำหรับลูปที่มีช่วงและค่าที่เพิ่มขึ้น

โดยค่าเริ่มต้น ตัวเลขจะเพิ่มขึ้นทีละหนึ่งในแต่ละขั้นตอนในช่วง เช่น seq คุณยังสามารถเปลี่ยนค่าที่เพิ่มขึ้นในช่วง เขียนรหัสต่อไปนี้ในไฟล์ทุบตีชื่อ sq3.bash . for loop ในสคริปต์จะวนซ้ำ 5 ครั้ง แต่ละขั้นตอนจะเพิ่มขึ้น 2 และพิมพ์เลขคี่ทั้งหมดระหว่าง 1 ถึง 10

#!/bin/bash
โยนออก 'เลขคี่ทั้งหมดตั้งแต่ 1 ถึง 10 คือ'
สำหรับผมใน {1..10..2}
ทำ
โยนออก $i;
เสร็จแล้ว

เอาท์พุท:

รันคำสั่งเพื่อรันสคริปต์ของไฟล์

$ทุบตีsq3.bash

หากคุณต้องการทำงานกับลำดับของตัวเลข คุณสามารถใช้ตัวเลือกใดก็ได้ที่แสดงอยู่ในบทช่วยสอนนี้ หลังจากเสร็จสิ้นการกวดวิชานี้ คุณจะสามารถใช้คำสั่ง seq และ for loop with range ได้อย่างมีประสิทธิภาพมากขึ้นใน bash script ของคุณ