Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

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

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

คุณยังสามารถตั้งค่าสคริปต์บางตัวให้ทำงานเมื่อเริ่มต้น เช่น แสดงข้อความเฉพาะเมื่อเปิดเซสชันใหม่หรือตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างได้

แอปพลิเคชันและการใช้สคริปต์มีมากมาย มาเริ่มกันเลย

ในบทความนี้ คุณจะได้เรียนรู้:

  1. bash shell คืออะไร
  2. สคริปต์ทุบตีคืออะไรและคุณจะระบุได้อย่างไร
  3. วิธีสร้าง bash script แรกและเรียกใช้งาน
  4. ไวยากรณ์พื้นฐานของเชลล์สคริปต์
  5. วิธีดูสคริปต์ตามกำหนดเวลาของระบบ
  6. วิธีทำให้สคริปต์อัตโนมัติโดยการจัดกำหนดการผ่านงาน cron

วิธีที่ดีที่สุดในการเรียนรู้คือการฝึกฝน ฉันขอแนะนำให้คุณติดตามโดยใช้ Replit คุณสามารถเข้าถึงเชลล์ Linux ที่ทำงานอยู่ได้ภายในไม่กี่นาที

ข้อมูลเบื้องต้นเกี่ยวกับ Bash Shell

บรรทัดคำสั่ง Linux มีให้โดยโปรแกรมที่เรียกว่าเชลล์ ในช่วงหลายปีที่ผ่านมา โปรแกรมเชลล์ได้พัฒนาเพื่อรองรับตัวเลือกต่างๆ

ผู้ใช้ที่แตกต่างกันสามารถกำหนดค่าให้ใช้เชลล์ที่แตกต่างกันได้ แต่ผู้ใช้ส่วนใหญ่ต้องการใช้เชลล์เริ่มต้นปัจจุบัน เชลล์เริ่มต้นสำหรับ Linux distros จำนวนมากคือ GNU Bourne-Again Shell (bash) Bash สำเร็จโดย Bourne shell (sh )

เมื่อคุณเปิดใช้เชลล์ในครั้งแรก เชลล์จะใช้สคริปต์เริ่มต้นที่อยู่ใน .bashrc หรือ .bash_profile ไฟล์ที่ให้คุณปรับแต่งการทำงานของเชลล์ได้

เมื่อใช้เชลล์แบบโต้ตอบ มันจะแสดง $ เมื่อรอรับคำสั่งจากผู้ใช้ นี่เรียกว่าพรอมต์ของเชลล์

[username@host ~]$

หากเชลล์ทำงานเป็นรูท พรอมต์จะเปลี่ยนเป็น # . พรอมต์ superuser ของเชลล์มีลักษณะดังนี้:

[root@host ~]#

Bash มีประสิทธิภาพมากเพราะทำให้การดำเนินการบางอย่างง่ายขึ้นซึ่งทำได้ยากด้วย GUI โปรดจำไว้ว่าเซิร์ฟเวอร์ส่วนใหญ่ไม่มี GUI และควรเรียนรู้การใช้พลังของอินเทอร์เฟซบรรทัดคำสั่ง (CLI)

สคริปต์ทุบตีคืออะไร

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

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

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

คุณระบุสคริปต์ทุบตีได้อย่างไร

นามสกุลไฟล์ของ .sh .

โดยการตั้งชื่อแบบแผน สคริปต์ทุบตีจะลงท้ายด้วย .sh . อย่างไรก็ตาม สคริปต์ทุบตีสามารถทำงานได้ดีโดยไม่มี sh การขยาย.

สคริปต์เริ่มต้นด้วย bash bang

สคริปต์ยังระบุด้วย shebang . Shebang คือการรวมกันของ bash # และ bang ! ตามเส้นทางเชลล์ทุบตี นี่คือบรรทัดแรกของสคริปต์ Shebang บอกให้เชลล์ดำเนินการผ่าน bash shell Shebang เป็นเพียงเส้นทางที่สมบูรณ์แบบสำหรับล่ามทุบตี

ด้านล่างนี้เป็นตัวอย่างของคำสั่ง shebang

#! /bin/bash

เส้นทางของโปรแกรมทุบตีอาจแตกต่างกันไป เราจะดูในภายหลังว่าจะระบุได้อย่างไร

สิทธิ์ในการดำเนินการ

สคริปต์มีสิทธิ์ดำเนินการสำหรับผู้ใช้ที่ดำเนินการ

สิทธิ์ในการดำเนินการแสดงโดย x . ในตัวอย่างด้านล่าง ผู้ใช้ของฉันมี rwx (อ่าน เขียน ดำเนินการ) สิทธิ์สำหรับไฟล์ test_script.sh

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

สีไฟล์

สคริปต์ปฏิบัติการจะปรากฏเป็นสีที่แตกต่างจากไฟล์และโฟลเดอร์ที่เหลือ

ในกรณีของฉัน สคริปต์ที่มีสิทธิ์ดำเนินการจะปรากฏเป็นสีเขียว

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

วิธีสร้างสคริปต์ทุบตีแรกของคุณ

มาสร้างสคริปต์อย่างง่ายใน bash ที่ส่งออก Hello World .

สร้างไฟล์ชื่อ hello_world.sh

touch hello_world.sh

ค้นหาเส้นทางไปยัง bash shell ของคุณ

which bash
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

ในกรณีของฉัน เส้นทางคือ /usr/bin/bash และฉันจะรวมสิ่งนี้ไว้ในชีบัง

เขียนคำสั่ง

เราจะ echo "สวัสดีชาวโลก" ไปยังคอนโซล

สคริปต์ของเราจะมีลักษณะดังนี้:

#! usr/bin/bash
echo "Hello World"

แก้ไขไฟล์ hello_world.sh โดยใช้โปรแกรมแก้ไขข้อความที่คุณเลือกและเพิ่มบรรทัดด้านบนเข้าไป

ให้สิทธิ์ในการดำเนินการแก่ผู้ใช้ของคุณ

แก้ไขการอนุญาตไฟล์และอนุญาตให้เรียกใช้สคริปต์โดยใช้คำสั่งด้านล่าง:

chmod u+x hello_world.sh

chmod แก้ไขสิทธิ์ที่มีอยู่ของไฟล์สำหรับผู้ใช้เฉพาะ เรากำลังเพิ่ม +x ถึงผู้ใช้ u .

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

คุณสามารถเรียกใช้สคริปต์ด้วยวิธีต่อไปนี้:

./hello_world.sh

bash hello_world.sh .

นี่คือผลลัพธ์:

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

ไวยากรณ์พื้นฐานของการเขียนสคริปต์ทุบตี

เช่นเดียวกับภาษาการเขียนโปรแกรมอื่น ๆ สคริปต์ทุบตีเป็นไปตามชุดของกฎเพื่อสร้างโปรแกรมที่คอมพิวเตอร์เข้าใจได้ ในส่วนนี้ เราจะศึกษาไวยากรณ์ของสคริปต์ทุบตี

วิธีกำหนดตัวแปร

เราสามารถกำหนดตัวแปรโดยใช้ไวยากรณ์ variable_name=value . ในการรับค่าของตัวแปร ให้เพิ่ม $ ก่อนตัวแปร

#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

ทักซ์ยังเป็นชื่อของมาสคอตลินุกซ์ เพนกวินอีกด้วย

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

นิพจน์เลขคณิต

ด้านล่างนี้คือตัวดำเนินการที่รองรับโดย bash สำหรับการคำนวณทางคณิตศาสตร์:

ตัวดำเนินการ การใช้งาน
+ เพิ่มเติม
- การลบ
* การคูณ
/ ดิวิชั่น
** การยกกำลัง
% โมดูลัส

มาดูตัวอย่างกัน

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

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

var=$((expression))

ลองมาดูตัวอย่างกัน

#!/bin/bash

var=$((3+9))
echo $var
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

เศษส่วนคำนวณไม่ถูกต้องโดยใช้วิธีการข้างต้นและตัดทอน

สำหรับการคำนวณทศนิยม , เราสามารถใช้ bc คำสั่งเพื่อให้ได้ผลลัพธ์เป็นทศนิยมจำนวนหนึ่ง bc (Bash Calculator) เป็นเครื่องคำนวณบรรทัดคำสั่งที่รองรับการคำนวณจุดทศนิยมจำนวนหนึ่ง

echo "scale=2;22/7" | bc

โดยที่ scale กำหนดจำนวนตำแหน่งทศนิยมที่ต้องการในผลลัพธ์

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

วิธีอ่านอินพุตของผู้ใช้

บางครั้ง คุณจะต้องรวบรวมข้อมูลของผู้ใช้และดำเนินการที่เกี่ยวข้อง

ใน bash เราสามารถป้อนข้อมูลของผู้ใช้โดยใช้ read คำสั่ง

read variable_name

หากต้องการแจ้งผู้ใช้ด้วยข้อความที่กำหนดเอง ให้ใช้ -p ธง.

read -p "Enter your age" variable_name

ตัวอย่าง:

#!/bin/bash

echo "Enter a numner"
read a

echo "Enter a numner"
read b

var=$((a+b))
echo $var
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

ตัวดำเนินการเชิงตรรกะเปรียบเทียบตัวเลข

การเปรียบเทียบใช้เพื่อตรวจสอบว่าคำสั่งประเมินเป็น true หรือ false . เราสามารถใช้ตัวดำเนินการที่แสดงด้านล่างเพื่อเปรียบเทียบสองคำสั่ง:

การทำงาน ไวยากรณ์ คำอธิบาย
ความเท่าเทียม num1 -eq num2 คือ num1 เท่ากับ num2
มากกว่าเท่ากับ num1 -ge num2 คือ num1 มากกว่าเท่ากับ num2
มากกว่า num1 -gt num2 เป็น num1 มากกว่า num2
น้อยกว่าเท่ากับ num1 -le num2 เป็น num1 น้อยกว่าเท่ากับ num2
น้อยกว่า num1 -lt num2 เป็น num1 น้อยกว่า num2
ไม่เท่ากับ num1 -ne num2 คือ num1 ไม่เท่ากับ num2

ไวยากรณ์ :

if [ conditions ]
    then
         commands
fi

ตัวอย่าง :

มาเปรียบเทียบตัวเลขสองตัวและหาความสัมพันธ์กัน:

read x
read y

if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi

เอาท์พุต:

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

คำสั่งแบบมีเงื่อนไข (การตัดสินใจ)

เงื่อนไขคือนิพจน์ที่ประเมินเป็นนิพจน์บูลีน (true หรือ false ). ในการตรวจสอบเงื่อนไข เราสามารถใช้ if , if-else , if-elif-else และซ้อนเงื่อนไข

โครงสร้างของประโยคเงื่อนไขมีดังนี้:

  • if...then...fi คำชี้แจง
  • if...then...else...fi คำชี้แจง
  • if..elif..else..fi
  • if..then..else..if..then..fi..fi.. (เงื่อนไขที่ซ้อนกัน)

ไวยากรณ์ :

if [[ condition ]]
then
	statement
elif [[ condition ]]; then
	statement 
else
	do this by default
fi

เพื่อสร้างการเปรียบเทียบที่มีความหมาย เราสามารถใช้ AND -a และ OR -o เช่นกัน

ข้อความด้านล่างแปลเป็น:ถ้า a มากกว่า 40 และ b น้อยกว่า 6

if [ $a -gt 40 -a $b -lt 6 ]

ตัวอย่าง :ลองหาประเภทสามเหลี่ยมโดยการอ่านความยาวของด้านของมัน

read a
read b
read c

if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL

elif [ $a == $b -o $b == $c -o $a == $c ]
then 
echo ISOSCELES
else
echo SCALENE

fi

ผลผลิต :

กรณีทดสอบ #1

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

กรณีทดสอบ #2

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

กรณีทดสอบ #3

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

วนซ้ำและข้าม

สำหรับลูปอนุญาตให้คุณดำเนินการคำสั่งตามจำนวนครั้งที่กำหนด

วนซ้ำกับตัวเลข:

ในตัวอย่างด้านล่าง ลูปจะวนซ้ำ 5 ครั้ง

#!/bin/bash

for i in {1..5}
do
    echo $i
done
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

วนรอบด้วยสตริง:

เราสามารถวนลูปผ่านสตริงได้เช่นกัน

#!/bin/bash

for X in cyan magenta yellow  
do
	echo $X
done
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

ขณะวนรอบ

ในขณะที่ลูปตรวจสอบเงื่อนไขและวนซ้ำจนกว่าเงื่อนไขจะยังคงเป็น true . เราจำเป็นต้องจัดเตรียมคำสั่งตัวนับที่เพิ่มตัวนับเพื่อควบคุมการทำงานของลูป

ในตัวอย่างด้านล่าง (( i += 1 )) เป็นคำสั่งตอบโต้ที่เพิ่มค่าของ i .

ตัวอย่าง:

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

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

สมมติว่าเรามีไฟล์ sample_file.txt ดังที่แสดงด้านล่าง:

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

เราสามารถอ่านไฟล์ทีละบรรทัดและพิมพ์ผลลัพธ์บนหน้าจอได้

#!/bin/bash

LINE=1

while read -r CURRENT_LINE
	do
		echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done < "sample_file.txt"

ผลลัพธ์:

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

วิธีดำเนินการคำสั่งด้วยเครื่องหมายย้อนกลับ

หากคุณต้องการรวมเอาท์พุตของคำสั่งที่ซับซ้อนในสคริปต์ของคุณ คุณสามารถเขียนคำสั่งภายในเครื่องหมายขีดกลับ

ไวยากรณ์:

var=` commands `

ตัวอย่าง :สมมติว่าเราต้องการรับผลลัพธ์ของรายการจุดเชื่อมต่อด้วย tmpfs ในชื่อของพวกเขา เราสามารถสร้างคำสั่งได้ดังนี้:df -h | grep tmpfs .

หากต้องการรวมไว้ในสคริปต์ทุบตี เราสามารถใส่เครื่องหมายถูกด้านหลัง

#!/bin/bash

var=`df -h | grep tmpfs`
echo $var

เอาท์พุต:

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

วิธีรับอาร์กิวเมนต์สำหรับสคริปต์จากบรรทัดคำสั่ง

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

$@ แทนตำแหน่งของพารามิเตอร์ โดยเริ่มจากตัวเดียว

#!/bin/bash

for x in $@
do
    echo "Entered arg is $x"
done

เรียกใช้ดังนี้:

./script arg1 arg2

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

วิธีการทำให้สคริปต์อัตโนมัติโดยการจัดกำหนดการผ่านงาน cron

Cron เป็นยูทิลิตี้การจัดตารางงานที่มีอยู่ในระบบที่คล้ายกับ Unix คุณสามารถกำหนดเวลาให้งานดำเนินการรายวัน รายสัปดาห์ รายเดือน หรือในเวลาที่กำหนดของวัน ระบบอัตโนมัติใน Linux อาศัยงาน cron เป็นหลัก

ด้านล่างนี้คือรูปแบบการจัดกำหนดการ crons:

# Cron job example
* * * * * sh /path/to/script.sh

ที่นี่ * แทนนาที ชั่วโมง วัน เดือน วันทำงาน ตามลำดับ

ด้านล่างนี้คือตัวอย่างการจัดกำหนดการงาน cron

กำหนดการ มูลค่าที่กำหนด
5 0 * 8 * เวลา 00:05 น. ในเดือนสิงหาคม
5 4 * * 6 เวลา 04:05 น. ของวันอาทิตย์
0 22 * ​​* 1-5 เวลา 22:00 น. ของทุกวันในสัปดาห์ ตั้งแต่วันจันทร์ถึงวันศุกร์

คุณสามารถเรียนรู้เกี่ยวกับ cron โดยละเอียดในบล็อกโพสต์นี้

วิธีตรวจสอบสคริปต์ที่มีอยู่ในระบบ

การใช้ crontab

crontab -l แสดงรายการสคริปต์ที่กำหนดไว้แล้วสำหรับผู้ใช้รายใดรายหนึ่ง

Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

การใช้คำสั่ง find

find คำสั่งช่วยในการค้นหาไฟล์ตามรูปแบบบางอย่าง เนื่องจากสคริปต์ส่วนใหญ่ลงท้ายด้วย .sh เราสามารถใช้สคริปต์ find ได้ดังนี้:

find . -type f -name "*.sh"

ที่ไหน

  • . แสดงถึงไดเร็กทอรีปัจจุบัน คุณสามารถเปลี่ยนเส้นทางได้ตามความเหมาะสม
  • -type f ระบุว่าประเภทไฟล์ที่เราต้องการเป็นไฟล์แบบข้อความ
  • *.sh บอกให้จับคู่ไฟล์ทั้งหมดที่ลงท้ายด้วย .sh .
Shell Scripting สำหรับผู้เริ่มต้น – วิธีเขียน Bash Scripts ใน Linux

หากคุณสนใจที่จะอ่านรายละเอียดเกี่ยวกับคำสั่ง find ตรวจสอบโพสต์อื่นของฉัน

สรุป

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

สิ่งที่คุณชอบที่สุดที่คุณได้เรียนรู้จากบทช่วยสอนนี้คืออะไร แจ้งให้เราทราบทาง Twitter!

คุณสามารถอ่านโพสต์อื่นๆ ของฉันได้ที่นี่

เวกเตอร์งานที่สร้างโดย macrovector - www.freepik.com