บทช่วยสอนการเขียนสคริปต์ทุบตีสำหรับผู้เริ่มต้น

Bash Scripting Tutorial



ภาษาคำสั่งเริ่มต้นของ Linux คือสคริปต์ทุบตี เราจำเป็นต้องเรียกใช้คำสั่งต่างๆ ใน ​​Linux เป็นประจำทุกวันเพื่อวัตถุประสงค์หลายประการ งานประจำวันเหล่านี้สามารถทำให้เป็นอัตโนมัติได้โดยใช้สคริปต์ทุบตี ผู้ใช้ทุกคนสามารถเรียนรู้ภาษาสคริปต์นี้ได้อย่างง่ายดายและรวดเร็ว หากคุณยังใหม่กับการเขียนโปรแกรม bash บทช่วยสอนนี้เหมาะสำหรับคุณ

สารบัญ:

  1. ความคิดเห็น
  2. คำสั่งก้อง
  3. ตัวแปร
  4. คำสั่งแบบมีเงื่อนไข
  5. ลูป
  6. ฟังก์ชั่น
  7. เรียกโปรแกรมในสคริปต์
  8. การสร้างเมนู
  9. การประมวลผลบรรทัดคำสั่ง
  10. เลขคณิต
  11. การจัดการสตริง
  12. ส่งคืนรหัสส่งคืนจากสคริปต์และจับในสคริปต์อื่น
  13. การอ่านและเขียนไฟล์
  14. ท่อ

ความคิดเห็น

การเพิ่มความคิดเห็นด้วยโค้ดเป็นส่วนสำคัญของภาษาการเขียนโปรแกรมใดๆ ความคิดเห็นจะไม่ถูกวิเคราะห์ด้วยสคริปต์ในขณะที่ดำเนินการ ผู้อ่านสามารถเข้าใจรหัสใด ๆ ได้อย่างถูกต้องหากมีการแสดงความคิดเห็นอย่างดี คุณสามารถเพิ่มความคิดเห็นได้หลายวิธีในสคริปต์ทุบตี วิธีเพิ่มความคิดเห็นแบบบรรทัดเดียวและหลายบรรทัดในสคริปต์ทุบตีจะแสดงในส่วนนี้ สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้เพื่อทราบการใช้ความคิดเห็น bash ที่นี่ สัญลักษณ์ '#' ใช้สำหรับเพิ่มความคิดเห็นบรรทัดเดียว และเครื่องหมายอัญประกาศเดี่ยว (') ที่มี ':' ใช้สำหรับเพิ่มความคิดเห็นหลายบรรทัด







bash_comment.sh



#!/bin/bash
#รับตัวเลขเป็นอินพุต
โยนออก 'ป้อนหมายเลข'
อ่านถึง
:'
ตรวจสอบหมายเลขอินพุต is
น้อยกว่า 10 หรือมากกว่า 10 หรือเท่ากับ 10
'

ถ้า [[ $ -lt 10 ]]
แล้ว
โยนออก 'จำนวนน้อยกว่า 10'
เอลฟ์ [[ $ -gt 10 ]]
แล้ว
โยนออก 'จำนวนมากกว่า 10'
อื่น
โยนออก 'จำนวนเท่ากับ 10'
เป็น

เอาท์พุท:



เรียกใช้สคริปต์





$ทุบตีbash_comment.sh

ที่นี่ สคริปต์ทำงานสามครั้งด้วยค่าอินพุต 3, 10 และ 90 ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น



หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการแสดงความคิดเห็น bash คุณสามารถตรวจสอบ บทช่วยสอนนี้ .

ไปที่ด้านบน

คำสั่งเสียงสะท้อน

คำสั่ง `echo` ใช้ใน bash เพื่อพิมพ์เอาต์พุตในเทอร์มินัล สามารถใช้ตัวเลือกต่างๆ กับคำสั่ง echo ใน bash เพื่อพิมพ์เอาต์พุตในรูปแบบต่างๆ สร้างไฟล์ทุบตีด้วยสคริปต์ต่อไปนี้เพื่อให้ทราบถึงการใช้คำสั่ง `echo` อย่างง่ายสองอย่าง ที่นี่ คำสั่ง `echo` แรกจะพิมพ์ข้อมูลข้อความธรรมดาด้วยบรรทัดใหม่ และคำสั่ง echo ที่สองจะพิมพ์ข้อความธรรมดาโดยไม่ต้องขึ้นบรรทัดใหม่

echo_test.sh

#!/bin/bash
#พิมพ์ข้อความแรก
โยนออก 'พิมพ์ข้อความขึ้นบรรทัดใหม่'
#พิมพ์ข้อความที่สอง
โยนออก -NS 'พิมพ์ข้อความโดยไม่ต้องขึ้นบรรทัดใหม่'

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีecho_test.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากดำเนินการคำสั่งดังกล่าว

มีการใช้งานอื่น ๆ อีกมากมายของคำสั่ง `echo` ใน bash คุณสามารถตรวจสอบบทช่วยสอนนี้เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง 'echo'

ไปที่ด้านบน

ตัวแปร

การประกาศตัวแปรเป็นส่วนที่จำเป็นของภาษาการเขียนโปรแกรมใดๆ ตัวแปร Bash สามารถประกาศได้หลายวิธี เมื่อกำหนดค่าในตัวแปรแล้ว จะไม่มีการใช้สัญลักษณ์ใดๆ ที่จุดเริ่มต้นของตัวแปร สัญลักษณ์ '$' ใช้กับชื่อตัวแปรในขณะที่อ่านค่าของตัวแปร สามารถใช้ตัวแปรจากเทอร์มินัลหรือใช้ในสคริปต์ทุบตีใดก็ได้

คำสั่งต่อไปนี้จะประกาศตัวแปรสตริงชื่อ mystr ด้วยค่าเฉพาะแล้วพิมพ์ค่าของตัวแปรในเทอร์มินัลต่อไป

$mystr='ฉันชอบการเขียนโปรแกรมทุบตี'
$โยนออก $mystr

เอาท์พุท:

สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้ มีการประกาศตัวแปรสองตัวที่นี่ เหล่านี้คือ $ และ $ b . หากค่าอินพุตที่เก็บอยู่ใน $ เท่ากับ $ b แล้วข้อความ ตัวเลขเท่ากัน จะพิมพ์เป็นอย่างอื่น ตัวเลขไม่เท่ากัน จะถูกพิมพ์

var.sh

#!/bin/bash
โยนออก 'ป้อนหมายเลข'
อ่านถึง
NS=100
ถ้า [[ $ -eq $ b ]]
แล้ว
โยนออก 'ตัวเลขเท่ากัน'
อื่น
โยนออก 'ตัวเลขไม่เท่ากัน'
เป็น

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีvar.sh

คำสั่งดังกล่าวดำเนินการสองครั้งโดยมีค่า 56 และ 100 ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับตัวแปร bash คุณสามารถตรวจสอบ บทช่วยสอนนี้ .

ไปที่ด้านบน

คำสั่งแบบมีเงื่อนไข

เช่นเดียวกับภาษาการเขียนโปรแกรมอื่น คุณสามารถใช้คำสั่งแบบมีเงื่อนไขในทุบตี ' ถ้า-แล้ว-อื่น ' และ ' กรณี ' คำสั่งส่วนใหญ่จะใช้สำหรับการนำคำสั่งเงื่อนไขไปใช้ในภาษาการเขียนโปรแกรมใดๆ การใช้ประโยคเงื่อนไขโดยใช้ 'ถ้า' คำสั่งแสดงอยู่ในส่วนนี้ของบทช่วยสอนนี้ สร้างไฟล์ทุบตีด้วยสคริปต์ต่อไปนี้ซึ่งใช้คำสั่งแบบมีเงื่อนไข ที่นี่ ค่าสองค่าจะถูกนำออกจากผู้ใช้เป็นอินพุตและเก็บไว้ในตัวแปร $code , และ $age . คำสั่ง 'if' ใช้สำหรับตรวจสอบค่าของ $age มากกว่าหรือเท่ากับ 18 และมูลค่าของ $code เป็น 1100 . หากทั้งสองเงื่อนไขเป็นจริง แสดงว่าข้อความนั้น มีสิทธิ์ดูหนัง จะพิมพ์เป็นอย่างอื่น คุณไม่มีสิทธิ์ดูหนัง จะถูกพิมพ์

cond.sh

#!/bin/bash

โยนออก 'ใส่รหัสของคุณ'
อ่านรหัส
โยนออก 'ป้อนอายุของคุณ'
อ่านอายุ

ถ้า [[ $age -ให้ 18 && $code -eq '1100' ]]
แล้ว
โยนออก 'มีสิทธิ์ดูหนัง'
อื่น
โยนออก 'คุณไม่มีสิทธิ์ดูหนัง'
เป็น

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีcond.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรับค่าอินพุตที่แตกต่างกัน 1100 ถูกกำหนดเป็นรหัส และ 5 ถูกกำหนดเป็นอายุสำหรับการดำเนินการครั้งแรก และหากเงื่อนไขคืนค่าเป็นเท็จสำหรับค่าเหล่านี้ 1100 ถูกกำหนดเป็นรหัสและ 45 ถูกกำหนดเป็นอายุสำหรับการดำเนินการครั้งที่สองที่คืนค่าเป็นจริงสำหรับเงื่อนไข if

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งเงื่อนไข bash คุณสามารถตรวจสอบ บทช่วยสอน นี้

ไปที่ด้านบน

ลูป

เมื่อบางส่วนของสคริปต์จำเป็นต้องดำเนินการหลายครั้ง ก็จะใช้ลูปเพื่อทำงาน Bash รองรับการประกาศลูปสามประเภทเหมือนกับภาษาอื่นๆ สิ่งเหล่านี้มีไว้สำหรับในขณะที่และจนกระทั่งวนซ้ำ สคริปต์จะใช้ลูปเฉพาะตามข้อกำหนดในการเขียนโปรแกรม การใช้ลูปทั้งสามประเภทนี้จะแสดงในส่วนนี้โดยใช้ตัวอย่างง่ายๆ

ใช้สำหรับลูป

สร้างไฟล์ทุบตีด้วยสคริปต์ต่อไปนี้โดยที่ ` สำหรับ` วนซ้ำใช้สำหรับการวนซ้ำ `สำหรับ` ส่วนใหญ่จะใช้วนซ้ำรายการข้อมูลหรืออาร์เรย์ ในที่นี้ รายชื่อวันทำงานจะถูกใช้ และชื่อวันทำงานแต่ละวันจะถูกวนซ้ำโดยใช้ for loop `ถ้า` คำสั่งใช้ในการพิมพ์ข้อความเฉพาะตามชื่อวันทำงาน

for.sh

#อ่านชื่อวันธรรมดาในการวนซ้ำแต่ละครั้ง
สำหรับวันในจันทร์ อังคาร พุธ พฤหัสบดี ศุกร์ เสาร์ อาทิตย์
ทำ

#เช็คชื่อวันธรรมดาคือวันจันทร์หรือพฤหัสบดี
ถ้า [[ $วัน=='วันจันทร์' || $วัน=='วันพฤหัสบดี' ]]
แล้ว
โยนออก 'นัดพบ$วันเวลา 9.30 น.

#เช็คชื่อวันธรรมดาคือ อังคาร พุธ หรือ ศุกร์
เอลฟ์ [[ $วัน=='วันอังคาร' || $วัน=='วันพุธ' || $วัน=='วันศุกร์' ]]
แล้ว
โยนออก 'กำลังฝึก$วันเวลา 11.00 น.
อื่น

#พิมพ์ 'วันหยุด' วันอื่นๆ
โยนออก '$วันเป็นวันหยุด'
เป็น
เสร็จแล้ว

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีfor.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

หากคุณต้องการทราบการใช้ bash for loop มากขึ้น คุณสามารถตรวจสอบบทช่วยสอนนี้

การใช้ while loop

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

#!/bin/bash

#พิมพ์ข้อความ
โยนออก 'พิมพ์ตัวเลขที่เป็นคู่และหารด้วย 5'

#เริ่มต้นเคาน์เตอร์
เคาน์เตอร์=1

#วนซ้ำจนกว่าค่าตัวนับ $ น้อยกว่าหรือเท่ากับ 20
ในขณะที่ [ $เคาน์เตอร์ -NS ยี่สิบ ]
ทำ

#ตรวจสอบว่าตัวนับ $ หารด้วย 2 และ 5 . ลงตัว
ถ้า [[ $เคาน์เตอร์%2-eq 0 && $เคาน์เตอร์%5-eq 0 ]]
แล้ว
#พิมพ์เคาน์เตอร์$โดยไม่ต้องขึ้นบรรทัดใหม่
โยนออก '$เคาน์เตอร์'
เป็น

#เพิ่มตัวนับ $ โดย 1
((เคาน์เตอร์++))
เสร็จแล้ว
โยนออก 'เสร็จแล้ว'

เอาท์พุท:

$ทุบตีwhile.sh

มีเพียงตัวเลขภายใน 1-20 ที่เป็นคู่และหารด้วย 5 ลงตัว ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

หากคุณต้องการทราบการใช้ bash ` . มากขึ้น ในขณะที่` วนซ้ำคุณสามารถตรวจสอบ บทช่วยสอนนี้ .

ใช้จนกว่าจะวนซ้ำ

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

จนกระทั่ง.sh

#!/bin/bash

#เริ่มต้นตัวแปร n
NS=ยี่สิบ

#วนซ้ำจนกว่าค่าของ $n จะมากกว่า 0
จนกระทั่ง [ $n -lt 0 ]
ทำ

#ตรวจค่า n เป็นเลขคี่
ถ้า [[ $n%2-gt 0 ]]
แล้ว
โยนออก $n
เป็น

#เพิ่มค่าของ n โดย 1
((NS=$n-1))
เสร็จแล้ว

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีจนกระทั่ง.sh

สคริปต์จะพิมพ์เลขคู่ทั้งหมดตั้งแต่ 20 ถึง 1 ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์

ไปที่ด้านบน

ฟังก์ชั่น

เมื่อบล็อกของรหัสต้องดำเนินการหลายครั้งในสคริปต์ ฟังก์ชันนี้จะถูกนำมาใช้ทำงาน คุณจะต้องเรียกใช้ฟังก์ชันตามชื่อเฉพาะเมื่อสคริปต์ที่กำหนดไว้ในฟังก์ชันจำเป็นต้องดำเนินการหลายครั้ง แทนที่จะเพิ่มสคริปต์เดียวกันหลายครั้ง วงเล็บแรกเริ่มต้นและสิ้นสุดใช้กับชื่อฟังก์ชันเพื่อประกาศฟังก์ชันในสคริปต์ทุบตี สามารถเรียกใช้ฟังก์ชันได้โดยใช้ชื่อฟังก์ชันใน bash Bash ไม่รองรับอาร์กิวเมนต์ของฟังก์ชันเหมือนกับภาษาโปรแกรมมาตรฐานอื่น แต่ค่าสามารถส่งผ่านไปยังฟังก์ชัน bash ได้ด้วยวิธีอื่นที่แสดงในส่วนนี้ ค่าสามารถส่งกลับจากฟังก์ชันด้วยคำสั่ง return หรือไม่ใช้คำสั่ง return

สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้เพื่อทราบว่าสามารถประกาศและเรียกใช้ฟังก์ชันในสคริปต์ทุบตีได้อย่างไร มีการประกาศฟังก์ชันสามอย่างในสคริปต์ ฟังก์ชั่นแรกถูกประกาศให้พิมพ์ข้อความอย่างง่าย Bash Programming สำหรับผู้เริ่มต้น . มีการประกาศฟังก์ชันที่สองเพื่อกำหนดค่าสตริงในตัวแปร $return_str ที่จะพิมพ์ว่า เรียนรู้การเขียนโปรแกรมทุบตีด้วย LinuxHint หลังจากเรียกใช้ฟังก์ชัน ฟังก์ชันที่สามได้รับการประกาศให้อ่านค่าอาร์กิวเมนต์เป็นรัศมีวงกลมที่จะระบุในเวลาที่เรียกใช้ฟังก์ชัน ที่นี่, ท้องถิ่น ใช้ในการอ่านค่าอาร์กิวเมนต์ ฟังก์ชันนี้จะคำนวณพื้นที่ของวงกลมตามค่ารัศมีโดยใช้สูตร พายอาร์2 และพิมพ์ค่าพื้นที่ที่คำนวณได้

func.sh

#!/bin/bash

#ประกาศฟังก์ชั่นง่ายๆ
การทำงานprint_message()
{
โยนออก 'การเขียนโปรแกรมทุบตีสำหรับผู้เริ่มต้น'
}

#ประกาศฟังก์ชันเพื่อคืนค่าสตริง
การทำงานret_strdata()
{
#เริ่มต้นตัวแปรด้วยค่าสตริง
return_str='เรียนรู้การเขียนโปรแกรมทุบตีด้วย LinuxHint'
}

#ประกาศฟังก์ชันอ่านค่าอาร์กิวเมนต์
การทำงานคำนวณ_area()

#อ่านค่าอาร์กิวเมนต์ที่ส่งผ่าน
ท้องถิ่น รัศมี=$ 1
พื้นที่= $(โยนออก $รัศมี*$รัศมี*3.14

#เรียกใช้ฟังก์ชันพิมพ์ข้อความง่ายๆ
print_message

#Call ฟังก์ชันที่จะกำหนดค่าสตริงในตัวแปร
ret_strdata

#พิมพ์ค่าตัวแปร
โยนออก $return_str

#อ่านค่ารัศมี
โยนออก 'ป้อนค่ารัศมี'
อ่านงาน

#เรียกฟังก์ชันด้วยค่ารัศมี
คำนวณ_area$ rad

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีfunc.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ สองบรรทัดแรกจะพิมพ์โดยการเรียกใช้ฟังก์ชัน print_message() และ ret_strdata () . บรรทัดสุดท้ายจะพิมพ์โดยการเรียกใช้ฟังก์ชัน คำนวณ_area () ด้วยค่ารัศมีอินพุตที่ถ่าย

หากคุณต้องการทราบเกี่ยวกับการส่งคืนสตริงจากฟังก์ชัน bash คุณสามารถ กวดวิชานี้ NS.

ไปที่ด้านบน

เรียกโปรแกรมในสคริปต์

คุณสามารถใช้คำสั่งได้หลายประเภทเพื่อเรียกโปรแกรมอื่น ๆ ในสคริปต์ทุบตีเช่น ที่มา, ทุบตี, eval, ผู้บริหาร ฯลฯ สมมติว่าสามไฟล์ทุบตี add.sh , ลบ.sh, multiply.sh และ division.sh สร้างขึ้นเพื่อทำการบวก ลบ คูณ และหาร ที่นี่, ลบ.sh และ Division.sh อ่านอาร์กิวเมนต์บรรทัดคำสั่ง สคริปต์ของไฟล์ทั้งสี่นี้ได้รับด้านล่าง

add.sh

#!/bin/bash
ถึง=60
NS=40
((ผลลัพธ์=$+$ b))
โยนออก 'การเพิ่มของ$+$ b=$ผลลัพธ์'

subract.sh

#!/bin/bash
ถึง=$ 1
NS=$ 2
((ผลลัพธ์=$-$ b))
โยนออก 'การลบของ$-$ b=$ผลลัพธ์'

คูณ.sh

#!/bin/bash
((ผลลัพธ์=$ 1*$ 2))
โยนออก 'การคูณของ $1 และ $2 คือ$ผลลัพธ์'

แบ่ง.sh

#!/bin/bash
ถึง=$ 1
NS=2
((ผลลัพธ์=$/$ b))
โยนออก 'การแบ่งของ$โดย$ bเป็น$ผลลัพธ์'

สร้างไฟล์ทุบตีชื่อ callpro.sh ด้วยสคริปต์ต่อไปนี้เพื่อเรียกไฟล์ bash ที่กล่าวถึงโดยใช้คำสั่ง source, bash, eval และ exec คุณต้องตั้งค่าการอนุญาตดำเนินการสำหรับไฟล์สี่ไฟล์ข้างต้นก่อนที่จะเรียกใช้สคริปต์ต่อไปนี้ คำสั่ง `source` ใช้สำหรับเรียก add.sh ไฟล์. คำสั่ง `bash` ใช้เพื่อรันไฟล์ subtract.sh คำสั่ง `eval' ใช้เพื่อรันไฟล์ multiply.sh ค่าอินพุตสองค่าจะถูกส่งเป็นอาร์กิวเมนต์บรรทัดคำสั่งสำหรับคำสั่ง `eval' คำสั่งสุดท้ายคือคำสั่ง exec ที่ทำงานกับพาธสัมบูรณ์เท่านั้น สำหรับสิ่งนี้ ชื่อพาธแบบเต็มของไฟล์ divide.sh จะได้รับในสคริปต์

callpro.sh

#!/bin/bash
script1='add.sh'
script2='ลบ.sh'
script3='คูณ.sh'
script4='/home/fahmida/code/divide.sh'

แหล่งที่มา '$script1'

ทุบตี $script2 ห้าสิบ ยี่สิบ

โยนออก 'ป้อนค่าของ'
อ่านถึง
โยนออก 'ป้อนค่าของ b'
อ่านNS
eval ทุบตี $script3 $ $ b
ผู้บริหาร $script4 30

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีcallpro.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

ไปที่ด้านบน

การสร้างเมนู

มีคำสั่งที่มีประโยชน์ในการทุบตีเพื่อสร้างเมนูอย่างง่ายที่เรียกว่า `เลือก` สั่งการ. สามารถสร้างเมนูประเภทต่างๆ ได้โดยใช้คำสั่งนี้ รายการข้อมูลเฉพาะถูกใช้เพื่อสร้างเมนูโดยคำสั่งนี้ สร้างไฟล์ทุบตีด้วยรหัสต่อไปนี้เพื่อดูการใช้ `เลือก` คำสั่งสร้างเมนู ในตัวอย่างนี้ รายการห้ารายการจะถูกพิมพ์เป็นเมนูและแจ้งให้ผู้ใช้เลือกภาษาใดก็ได้จากรายการ ค่าที่เลือกจะถูกเก็บไว้ในตัวแปร $ภาษา ที่พิมพ์ในภายหลังโดยเชื่อมกับสตริงอื่น สคริปต์จะถามให้เลือกภาษาอย่างต่อเนื่องจนกว่าผู้ใช้จะกด 6 เพื่อยุติจากสคริปต์

menu.sh

#!/bin/bash

#พิมพ์ข้อความสำหรับผู้ใช้
โยนออก 'เลือกภาษาที่คุณชื่นชอบ'

#กำหนดรายการเมนู
เลือกภาษาใน# Java PHP Python Bash ออก
ทำ
#พิมพ์ค่าที่เลือก
ถ้า [[ $ภาษา=='ออก' ]]
แล้ว
ทางออก 0
อื่น
โยนออก 'ภาษาที่เลือกคือ$ภาษา'
เป็น
เสร็จแล้ว

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีmenu.sh

จากผลลัพธ์ต่อไปนี้ ผู้ใช้กด 3 เป็นครั้งแรกที่พิมพ์ PHP และกด 6 เป็นครั้งที่สองที่สิ้นสุดจากสคริปต์

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการสร้างเมนูทุบตีด้วย `select' คุณสามารถไปที่บทช่วยสอนนี้ได้

ไปที่ด้านบน

การประมวลผลบรรทัดคำสั่ง

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

สร้างไฟล์ทุบตีด้วยสคริปต์ต่อไปนี้เพื่อดูการใช้การอ่านค่าอาร์กิวเมนต์บรรทัดคำสั่ง สคริปต์นี้จะอ่านอาร์กิวเมนต์บรรทัดคำสั่งสามรายการซึ่งจะถูกเก็บไว้ในตัวแปร $operand1, $operand2 และ $operator ในการรันสคริปต์อย่างถูกต้อง ค่าอาร์กิวเมนต์ที่หนึ่งและสามต้องเป็นตัวเลข และค่าอาร์กิวเมนต์ที่สองต้องเป็นตัวดำเนินการเลขคณิตใดๆ ในสี่ตัว ('+', '-', '/', 'x') ถ้า คำสั่งจะตรวจสอบค่าของ $operator และดำเนินการตามตัวดำเนินการและพิมพ์ค่า

cl1.sh

#!/bin/bash

#พิมพ์ตัวแปรอาร์กิวเมนต์
โยนออก 'ค่าอาร์กิวเมนต์คือ: $1 $2 $3'

# เก็บค่าอาร์กิวเมนต์
ตัวถูกดำเนินการ1=$ 1
ตัวถูกดำเนินการ2=$ 3
โอเปอเรเตอร์=$ 2

#ตรวจสอบค่าอาร์กิวเมนต์คำสั่งที่ 2 เพื่อดำเนินการคำนวณ
ถ้า [[ $operator=='+' ]]
แล้ว
((ผลลัพธ์=$ ตัวถูกดำเนินการ1+$ ตัวถูกดำเนินการ2))
เอลฟ์ [[ $operator=='-' ]]
แล้ว
((ผลลัพธ์=$ ตัวถูกดำเนินการ1-$ ตัวถูกดำเนินการ2))
เอลฟ์ [[ $operator=='NS' ]]
แล้ว
((ผลลัพธ์=$ ตัวถูกดำเนินการ1*$ ตัวถูกดำเนินการ2))
เอลฟ์ [[ $operator=='/' ]]
แล้ว

((ผลลัพธ์=$ ตัวถูกดำเนินการ1/$ ตัวถูกดำเนินการ2))
เป็น

#พิมพ์ผล
โยนออก -และ 'ผลลัพธ์คือ =$ผลลัพธ์'

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีcl1.sh

สคริปต์ดำเนินการสี่ครั้งสำหรับตัวดำเนินการเลขคณิตสี่ประเภท ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นสำหรับค่าอาร์กิวเมนต์ 6 + 3, 6 – 3, 6 x 3 และ 6 / 3 .

ค่าอาร์กิวเมนต์สามารถส่งผ่านด้วยคู่ค่าชื่อในทุบตี สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้เพื่อแสดงวิธีอ่านค่าอาร์กิวเมนต์ด้วยชื่อ สคริปต์จะอ่านตัวแปรอาร์กิวเมนต์สองตัว ค่าอาร์กิวเมนต์ที่มีชื่อจะพิมพ์อยู่ในคำสั่งแรกของสคริปต์ ถัดไป ใช้ for loop เพื่อวนซ้ำอาร์เรย์ที่มีค่าอาร์กิวเมนต์บรรทัดคำสั่ง แต่ละองค์ประกอบของอาร์เรย์จะถูกแยกออกเป็นคู่คีย์-ค่าโดยใช้คำสั่ง `cut` ถัดไป คำสั่ง case ใช้เพื่อพิมพ์ข้อความเฉพาะตามค่าคีย์

cl2.sh

#! /เป็น/ทุบตี

#พิมพ์ตัวแปรอาร์กิวเมนต์
โยนออก 'ค่าอาร์กิวเมนต์คือ: $1 $2'

#อ่านอาร์กิวเมนต์แยกกันโดยใช้ for loop
สำหรับโกรธใน ' [ป้องกันอีเมล] '
ทำ

#แยกชื่ออาร์กิวเมนต์และค่า
กุญแจ= $(โยนออก $ arg | ตัด -f1 -NS=)
ค่า= $(โยนออก $ arg | ตัด -f2 -NS=)

#พิมพ์ข้อความตามชื่ออาร์กิวเมนต์
กรณี $key ใน
ชื่อ) โยนออก 'ชื่อนักเรียน =$value';;
เครื่องหมาย) โยนออก 'เครื่องหมายที่ได้รับ =$value' ;;
*)
esac
เสร็จแล้ว

เอาท์พุท:

รันสคริปต์ด้วยอาร์กิวเมนต์บรรทัดคำสั่งต่อไปนี้

$ทุบตีcl2.shชื่อ=อาบีร์ ฮูเซนเครื่องหมาย=90

อาร์กิวเมนต์บรรทัดคำสั่งสองรายการมีอยู่ในคำสั่งข้างต้น เหล่านี้คือ ชื่อ=อาบีร์ ฮอสเซน และ มาร์ค=90 . ชื่อ และ เครื่องหมาย ถูกคั่นด้วยสคริปต์และพิมพ์สองค่าหลังจากจัดรูปแบบเอาต์พุต

การประมวลผลอาร์กิวเมนต์บรรทัดคำสั่งโดยใช้ getopts ฟังก์ชั่นไม่ได้กล่าวถึงในบทช่วยสอนนี้ หากคุณต้องการทราบเกี่ยวกับการประมวลผลบรรทัดคำสั่งโดยใช้ getopts ฟังก์ชันแล้วคุณสามารถเยี่ยมชม บทช่วยสอนนี้ .

ไปที่ด้านบน

เลขคณิต

การดำเนินการเลขคณิตเป็นข้อกำหนดทั่วไปของภาษาการเขียนโปรแกรมใดๆ Bash ดำเนินการคำนวณในทางที่แตกต่างจากภาษาโปรแกรมมาตรฐานอื่น มีหลายวิธีในการดำเนินการทางคณิตศาสตร์ในทุบตี วิธีง่ายๆ ในการทำการคำนวณทางคณิตศาสตร์แสดงไว้ในส่วนนี้ สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้ สคริปต์นี้แสดงการดำเนินการเลขคณิตสี่ประเภท การดำเนินการรวมและการหารอย่างง่ายจะแสดงโดยใช้วงเล็บคู่แรกที่จุดเริ่มต้นของสคริปต์ ถัดไป การดำเนินการเพิ่มล่วงหน้าจะแสดงขึ้น สุดท้าย วิธีการใช้ตัวดำเนินการชวเลขจะแสดงในส่วนสุดท้ายของสคริปต์

arith.sh

#!/bin/bash
# คำนวณผลรวม
ผลลัพธ์= $((ห้าสิบ+25))
# พิมพ์ค่ารวม
โยนออก 'ผลรวม =$ผลลัพธ์'

#คำนวณหาร
ผลลัพธ์= $((ห้าสิบ/25))
#พิมพ์หารค่า
โยนออก 'ดิวิชั่น =$ผลลัพธ์'

# กำหนดค่าให้กับN
NS=10
#ทำก่อนเพิ่ม
((--NS))
# พิมพ์ค่าของ N
โยนออก 'ค่าหลังจากการลดลง =$N'

# การใช้ตัวดำเนินการชวเลข
((ไม่มี +=10 ))
# พิมพ์ค่าของ N
โยนออก 'ค่าหลังจากบวก 10 =$N'

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีarith.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

การดำเนินการทางคณิตศาสตร์ทั้งหมดทำได้โดยใช้วงเล็บคู่ในสคริปต์ด้านบนนี้ แต่คุณสามารถใช้ ' ปล่อย ',' ด่วน ' และ ' bc ' คำสั่งให้ทำการคำนวณทางคณิตศาสตร์ในทุบตี หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งเหล่านี้สำหรับการดำเนินการ bash arithmetic คุณสามารถไปที่บทช่วยสอนนี้ได้

ไปที่ด้านบน

การจัดการสตริง

งานหลายประเภทสามารถทำได้ด้วยข้อมูลสตริงในทุบตี บางอย่างกำลังเชื่อมสตริง เปรียบเทียบสตริง การแยกสตริง การเปลี่ยนตัวพิมพ์ของสตริง ฯลฯ ไม่มีฟังก์ชันสตริงในตัวเหมือนกับภาษามาตรฐานอื่นๆ ใน bash เพื่อดำเนินการกับสตริง มีการกล่าวถึงการปรับแต่งสตริงทั่วไปบางส่วนในส่วนนี้ของบทช่วยสอนนี้

การต่อสตริง

การเพิ่มสตริงตั้งแต่สองสตริงขึ้นไปเข้าด้วยกันเรียกว่าการต่อสตริง สตริงถูกรวมเข้าด้วยกันในทุบตีโดยวางทีละอัน สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้เพื่อแสดงการใช้การต่อสตริง ตัวแปรสตริงสองตัวได้รับการเตรียมใช้งานและพิมพ์หลังจากรวมตัวแปรแล้ว ที่นี่เนื้อหาของ $string1 และ $string2 จะถูกรวมและพิมพ์

concat.sh

#!/bin/bash

#เริ่มต้นตัวแปรสตริงแรก
string1='ฉันชอบ '
#เริ่มต้นตัวแปรสตริงที่สอง
string2='การเขียนโปรแกรมทุบตี'
#พิมพ์หลังจากรวมทั้งสองสายเข้าด้วยกัน
โยนออก '$string1$string2'

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีconcat.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

คุณสามารถทราบข้อมูลเพิ่มเติมเกี่ยวกับการต่อสตริงจากบทช่วยสอนนี้

ไปที่ด้านบน

การเปรียบเทียบสตริง

Bash ใช้ตัวดำเนินการประเภทต่างๆ เพื่อเปรียบเทียบข้อมูลสตริง สร้างไฟล์ทุบตีด้วยสคริปต์ต่อไปนี้เพื่อแสดงวิธีเปรียบเทียบข้อมูลสตริงสองรายการ ค่าสตริงถูกใช้เป็นอินพุตในสคริปต์ที่เปรียบเทียบกับสตริงอื่น หากค่าตรงกัน แสดงว่าเป็นข้อความ คุณชอบ Python จะพิมพ์เป็นอย่างอื่น คุณชอบ PERL จะถูกพิมพ์

เปรียบเทียบ.sh

#!/bin/bash
โยนออกป้อนค่าสตริงใด ๆ
อ่านข้อความ

#ตรวจสอบข้อมูลที่ป้อนเข้าเทียบเท่ากับ Python
ถ้า [ $text=='งูหลาม' ];แล้ว
โยนออก 'คุณชอบ Python'
อื่น
โยนออก 'คุณชอบ PERL'
เป็น

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีเปรียบเทียบ.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์โดยที่ค่าอินพุตคือ 'PERL'

คุณสามารถทราบข้อมูลเพิ่มเติมเกี่ยวกับการเปรียบเทียบสตริงได้จาก บทช่วยสอนนี้ .

แยกสตริง

Bash ไม่มีฟังก์ชัน split ในตัวเพื่อแบ่งข้อมูลสตริง ข้อมูลสตริงสามารถแบ่งได้หลายวิธีใน bash ตามประเภทของตัวคั่น สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้เพื่อแสดงว่าข้อมูลสตริงสามารถแบ่งออกเป็น bash ได้อย่างไร ค่าสตริงจะถูกนำมาเป็นอินพุต สคริปต์นี้จะแบ่งค่าของ $text ขึ้นอยู่กับพื้นที่ ที่นี่ ไอเอฟเอส ตัวแปรใช้เพื่อกำหนดตัวคั่น `อ่าน` คำสั่งใช้ที่นี่เพื่อแบ่งค่าข้อความและเก็บค่าลงในอาร์เรย์ สำหรับ วงใช้เพื่อวนซ้ำอาร์เรย์และพิมพ์ค่าของแต่ละองค์ประกอบ

split.sh

#!/bin/bash
#ใส่ค่าสตริง
โยนออกป้อนค่าสตริง
อ่านข้อความ
# ตั้งค่าตัวคั่น
ไอเอฟเอส=''
#แยกค่าของ $text ออกเป็นอาร์เรย์ตามตัวคั่นช่องว่าง
อ่าน -ถึงarr<<< '$text'
# พิมพ์แต่ละค่าของอาร์เรย์
สำหรับค่าใน '${arr[@]}';
ทำ
printf '$valueNS'
เสร็จแล้ว

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีsplit.sh

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

คุณสามารถทราบข้อมูลเพิ่มเติมเกี่ยวกับการเปรียบเทียบสตริงได้จาก บทช่วยสอนนี้ .

การเปลี่ยนตัวพิมพ์ของสตริง

ภาษาสคริปต์ส่วนใหญ่มีฟังก์ชันในตัวเพื่อเปลี่ยนตัวพิมพ์ของข้อมูลสตริง แต่กรณีของข้อมูลสตริงสามารถเปลี่ยนเป็น bash ได้โดยใช้ `tr` คำสั่งหรือโดยใช้ ':บน' และ ':ต่ำกว่า' คำหลัก สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้เพื่อทราบวิธีการเปลี่ยนตัวพิมพ์ใน bash ที่นี่ข้อมูลสตริงแรกจะถูกแปลงเป็นตัวพิมพ์ใหญ่โดยใช้ '^^' สัญลักษณ์และสตริงที่สองจะถูกแปลงเป็นตัวพิมพ์เล็กโดยใช้ `tr` สั่งการ. `tr` คำสั่งจะค้นหาอักษรตัวพิมพ์ใหญ่ทั้งหมดในสตริงและแปลงอักขระเป็นตัวพิมพ์เล็ก

case.sh

#!/bin/bash

#เริ่มต้นข้อมูลสตริงแรก
ข้อความ 1=' [ป้องกันอีเมล] '

#พิมพ์ค่าของ $text1 โดยแปลงอักขระทั้งหมดเป็นตัวพิมพ์ใหญ่
โยนออก ${อีเมล^^}

#เริ่มต้นข้อมูลสตริงที่สอง
text2='พื้นฐานการเขียนโปรแกรมทุบตี'

#พิมพ์ค่าของ $text2 โดยแปลงตัวพิมพ์ใหญ่ทั้งหมดเป็นตัวพิมพ์เล็ก
โยนออก $text2 | NS [:บน:] [:ต่ำกว่า:]

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีcase.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

คุณสามารถทราบข้อมูลเพิ่มเติมเกี่ยวกับการเปรียบเทียบสตริงได้จาก บทช่วยสอนนี้ .

ไปที่ด้านบน

การอ่านข้อมูลสตริงผ่านลูป

ข้อมูลสตริงทำงานเป็นอาร์เรย์อักขระสำหรับภาษาการเขียนโปรแกรมใดๆ ยังไง ' สำหรับ ' สามารถใช้ลูปเพื่ออ่านข้อมูลสตริงใน bash ที่แสดงไว้ในส่วนนี้ สร้างไฟล์ฐานด้วยสคริปต์ต่อไปนี้เพื่ออ่านค่าสตริงแต่ละส่วนโดยใช้ for loop

readstr.sh

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

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีreadstr.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

คุณสามารถทราบข้อมูลเพิ่มเติมเกี่ยวกับการวนซ้ำข้อมูลสตริงโดยใช้ลูปจาก บทช่วยสอนนี้ .

ไปที่ด้านบน

ส่งคืนรหัสส่งคืนจากสคริปต์และจับในสคริปต์อื่น

สคริปต์ทุบตีหนึ่งตัวสามารถจับรหัสส่งคืนจากสคริปต์อื่นได้โดยการเรียกสคริปต์และใช้ '$?' เพื่ออ่านค่าที่ส่งกลับ สมมติว่าไฟล์ทุบตีชื่อ ครั้งแรก.sh ส่งคืนรหัสหลังจากดำเนินการ สร้างไฟล์ทุบตีอื่นชื่อ วินาที.sh และเพิ่มสคริปต์ต่อไปนี้เพื่อรับค่าที่ส่งคืนและทำงานอื่นๆ รหัสของทั้งสองไฟล์ได้รับด้านล่าง ครั้งแรก.sh ไฟล์จะถูกเรียกจาก วินาที.sh ไฟล์ที่จุดเริ่มต้นของสคริปต์ ครั้งแรก.sh จะส่งคืนรหัสออกตามค่าอินพุต Second.sh จะจับรหัสโดย '$?' และเปรียบเทียบกับ 1 ถ้าทั้งสองค่าเท่ากันก็จะพิมพ์ออกมา จำนวนอินพุตมากกว่า 100 มิฉะนั้นจะพิมพ์ จำนวนอินพุตน้อยกว่าหรือเท่ากับ100 .

ครั้งแรก.sh

#!/bin/bash

โยนออก 'ป้อนค่าตัวเลข'
อ่านNS

#ตรวจสอบค่าอินพุทน้อยกว่าหรือเท่ากับ 100 หรือเปล่า
ถ้า [[ $n -NS 100 ]]
แล้ว
ทางออก 0
อื่น
ทางออก 1
เป็น

วินาที.sh

#! /bin/bash

#รันไฟล์ first.sh
ทุบตี 'เฟิร์ส. ช'

#เช็คโค้ดคืนว่าเท่ากับ 1 หรือเปล่า
ถ้า [ $? -eq 1 ]
แล้ว
โยนออก 'จำนวนอินพุตมากกว่า 100'
อื่น
โยนออก 'จำนวนอินพุตน้อยกว่าหรือเท่ากับ 100'
เป็น

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีวินาที.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นเมื่อสคริปต์ถูกเรียกใช้งานโดย 55 และ 110 สองครั้ง

ไปที่ด้านบน

การอ่านและเขียนไฟล์

การอ่านและการเขียนไฟล์เป็นข้อกำหนดทั่วไปของการเขียนโปรแกรมทุบตี Bash ไม่มีฟังก์ชันในตัวเช่นภาษาอื่นในการอ่านหรือเขียนไฟล์ มีหลายวิธีในการอ่านไฟล์ใน bash วิธีทั่วไปในการอ่านหรือเขียนไฟล์ใน bash คือการใช้ `แมว` สั่งการ. แต่คำสั่งนี้ใช้เพื่ออ่านเนื้อหาทั้งหมดของไฟล์ในแต่ละครั้ง คุณยังสามารถอ่านไฟล์ทีละบรรทัดโดยใช้ลูปใดก็ได้และ `อ่าน` สั่งการ. โดยใช้ตัวดำเนินการเปลี่ยนเส้นทาง '>' คุณสามารถเขียนข้อมูลลงในไฟล์ใดก็ได้ใน bash หากคุณต้องการผนวกข้อมูลลงในไฟล์ใด ๆ คุณต้องใช้ '>>' โอเปอเรเตอร์ การดำเนินการอ่านและเขียนไฟล์จะแสดงในส่วนถัดไปของส่วนนี้

กำลังอ่านไฟล์ใน bash

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

hardware.txt

เฝ้าสังเกต
แป้นพิมพ์
หนู
สแกนเนอร์
เครื่องพิมพ์

readfile.sh

#!/bin/bash

โยนออก 'การอ่านไฟล์โดยใช้คำสั่ง cat'

# อ่านเนื้อหาของไฟล์โดยใช้คำสั่ง `cat`
เนื้อหา=``แมวhardware.txt``
โยนออก $เนื้อหา

โยนออก 'การอ่านไฟล์ทีละบรรทัดโดยใช้ลูป'

# กำหนดชื่อไฟล์
ชื่อไฟล์='hardware.txt'

# แต่ละบรรทัดของไฟล์จะถูกอ่านโดยการวนซ้ำแต่ละครั้งของลูป
ในขณะที่ อ่านไลน์;
ทำ
#พิมพ์ไลน์
โยนออก $line
เสร็จแล้ว<$ชื่อไฟล์

เอาท์พุท:

รันคำสั่งต่อไปนี้

$แมวhardware.txt
$ทุบตีreadfile.sh

ที่นี่คำสั่งแรกจะพิมพ์เนื้อหาของไฟล์ hardware.txt โดยไม่ต้องรันสคริปต์ทุบตีใด ๆ และคำสั่งที่สองจะเรียกใช้สคริปต์ของ readfile.sh และพิมพ์เนื้อหาของไฟล์สองครั้งโดยใช้ `แมว` คำสั่งและ `อ่าน` คำสั่งด้วย while loop เชิญแวะชมได้นะคะ กวดวิชา เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับการอ่านไฟล์ทีละบรรทัด

กำลังเขียนไฟล์ใน bash

สร้างไฟล์ bash ด้วยสคริปต์ต่อไปนี้เพื่อเขียนเนื้อหาใหม่ในไฟล์ใหม่และผนวกข้อมูลในไฟล์นั้น

writefile.sh

#!/bin/bash

โยนออก 'ป้อนข้อความ'
#อ่านข้อมูลสตริง
อ่านstr1
#เพิ่มข้อมูลเข้าไฟล์ครั้งแรก
โยนออก $str1 >test.txt

โยนออก 'ป้อนข้อความอื่น'
#อ่านข้อมูลสตริงอื่น
อ่านstr2
#เพิ่มข้อมูลเข้าท้ายไฟล์
โยนออก $str2 >>test.txt

#แสดงเนื้อหาทั้งหมดของไฟล์
โยนออก ``แมวtest.txt``

เอาท์พุท:

เรียกใช้สคริปต์

$ทุบตีwritefile.sh

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

ไปที่ด้านบน

ท่อ

ไปป์ใช้เพื่อเปลี่ยนเส้นทางเอาต์พุตคำสั่งไปยังอินพุตคำสั่งอื่น สามารถใช้กับคำสั่ง bash ประเภทต่างๆ เพื่อสร้างเอาต์พุตเฉพาะ อินพุตมาตรฐานเชื่อมต่อกับเอาต์พุตมาตรฐานใน Linux โดยไพพ์ คุณต้องตั้งค่าคำสั่งตามลำดับด้วยสัญลักษณ์ไพพ์ ( | ) เพื่อให้ได้ผลลัพธ์ที่ต้องการ คำสั่งตั้งแต่สองคำสั่งขึ้นไปสามารถดำเนินการร่วมกันในคำสั่งเดียวโดยใช้ไพพ์ คุณต้องรันคำสั่งหลายคำสั่งในหลายบรรทัดโดยไม่ใช้ไพพ์เพื่อทำงานเดียวกัน ดังนั้นการใช้ไพพ์จึงเป็นประโยชน์อย่างมากสำหรับการทำงานหลายประเภทในระยะสั้น

ไวยากรณ์:

command1|command2|...

ที่นี่ เอาต์พุตของ command1 จะถูกส่งผ่านเป็นอินพุตของ command2

งานประเภทเดียวกันนี้ใช้ไปป์และไม่มีไปป์ในส่วนถัดไปของส่วนนี้ สมมติว่าไฟล์ข้อความชื่อ เครื่องหมาย.txt จะได้รับพร้อมกับข้อมูลต่อไปนี้

เครื่องหมาย.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

คุณต้องจัดเรียงข้อมูลของไฟล์และค้นหาและพิมพ์รายการทั้งหมดของชื่อนักเรียน 'K ใช่ ' . คุณสามารถทำงานนี้ได้โดยการรันหลายคำสั่งโดยไม่ต้องใช้ไพพ์ที่แสดงในส่วนถัดไป คำสั่งต่อไปนี้จะต้องรันเพื่อให้ได้ผลลัพธ์ที่ต้องการ คำสั่งแรกจะเรียงลำดับไฟล์ คำสั่งที่สองจะค้นหารายการ 'K ใช่ ' ใช้ ` กริป ` คำสั่งและจัดเก็บผลลัพธ์ใน temp.txt ไฟล์. คำสั่งที่สามจะนับจำนวนบรรทัดทั้งหมดของa temp.txt ไฟล์โดยใช้ `wc` สั่งการ.

$เรียงลำดับเครื่องหมาย.txt
$กริป 'เคยา'เครื่องหมาย.txt>temp.txt
$ห้องน้ำ -NStemp.txt

เอาท์พุท:

สองรายการของนักเรียน 'Keya' มีอยู่ในไฟล์ ดังนั้นหลังจากรันคำสั่งข้างต้น ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

คุณสามารถรวมคำสั่งสามคำสั่งข้างต้นได้อย่างง่ายดายและรับเอาต์พุตเดียวกันโดยเรียกใช้คำสั่งเดียวกับไพพ์ที่แสดงในคำสั่งต่อไปนี้ ไม่จำเป็นต้องใช้ไฟล์ชั่วคราวที่นี่เพื่อรับผลลัพธ์ ที่นี่ผลลัพธ์ของ ` เรียงลำดับ คำสั่ง ` จะถูกส่งผ่านเป็นอินพุตของ ` กริป ` คำสั่งและผลลัพธ์ของ ` กริป คำสั่ง ` จะถูกส่งผ่านเป็นอินพุตสำหรับ `wc` สั่งการ.

$เรียงลำดับเครื่องหมาย.txt| กริป 'เคยา' | ห้องน้ำ -NS

เอาท์พุท:

Afttr เรียกใช้คำสั่งด้านบน คุณจะได้ผลลัพธ์ต่อไปนี้เหมือนกับผลลัพธ์ของคำสั่งก่อนหน้า ผลลัพธ์ของคำสั่งจะเป็น 2

ไปที่ด้านบน

บทสรุป:

หัวข้อที่เป็นประโยชน์และจำเป็นที่สุดของภาษาสคริปต์ทุบตีพยายามครอบคลุมในบทช่วยสอนนี้ หวังว่าผู้อ่านจะได้รับประโยชน์หลังจากอ่านบทช่วยสอนนี้และสามารถเขียนสคริปต์ทุบตีได้อย่างมีประสิทธิภาพมากขึ้น