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

วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

การสร้างเชลล์สคริปต์เป็นหนึ่งในทักษะที่สำคัญที่สุดที่ผู้ใช้ Linux ควรมีเพียงแค่ปลายนิ้วสัมผัส เชลล์สคริปต์มีบทบาทอย่างมากในการทำงานซ้ำๆ โดยอัตโนมัติ ซึ่งมิฉะนั้น การดำเนินการทีละบรรทัดจะน่าเบื่อหน่าย

ในบทช่วยสอนนี้ เราเน้นย้ำถึงการดำเนินการเชลล์สคริปต์พื้นฐานบางอย่างที่ผู้ใช้ Linux ทุกคนควรมี

1. สร้างเชลล์สคริปต์อย่างง่าย

เชลล์สคริปต์คือไฟล์ที่ประกอบด้วย ASCII ข้อความ. เราจะเริ่มต้นด้วยการสร้างเชลล์สคริปต์อย่างง่าย และในการดำเนินการนี้ เราจะใช้โปรแกรมแก้ไขข้อความ มีโปรแกรมแก้ไขข้อความค่อนข้างมาก ทั้งแบบบรรทัดคำสั่งและแบบ GUI สำหรับคำแนะนำนี้ เราจะใช้ตัวแก้ไข vim

เราจะเริ่มต้นด้วยการสร้างสคริปต์ง่ายๆ ที่แสดง “สวัสดีชาวโลก ” เมื่อดำเนินการ

$ vim hello.sh

วางเนื้อหาต่อไปนี้ในไฟล์และบันทึก

#!/bin/bash
# Print Hello world message
echo "Hello World!"

มาดูเชลล์สคริปต์ทีละบรรทัด

  • บรรทัดแรก – #!/bin/bash – เป็นที่รู้จักกันในชื่อ shebang header นี่เป็นโครงสร้างพิเศษที่ระบุว่าจะใช้โปรแกรมใดในการตีความสคริปต์ ในกรณีนี้ นี่จะเป็น ทุบตี เชลล์ระบุโดย /bin/bash . มีภาษาสคริปต์อื่นๆ เช่น Python ซึ่งแสดงด้วย #!/usr/bin/python3 และ Perl ซึ่งส่วนหัว shebang นั้นแสดงโดย #!/usr/bin/perl .
  • บรรทัดที่สองคือความคิดเห็น ความคิดเห็นคือคำสั่งที่อธิบายสิ่งที่เชลล์สคริปต์ทำและไม่ถูกเรียกใช้งานเมื่อรันสคริปต์ เครื่องหมายแฮชนำหน้าความคิดเห็นเสมอ # .
  • บรรทัดสุดท้ายคือคำสั่งที่พิมพ์ 'Hello World ’ ข้อความบนเทอร์มินัล

ขั้นตอนต่อไปคือการทำให้สคริปต์สามารถเรียกใช้งานได้โดยกำหนดสิทธิ์ในการดำเนินการโดยใช้ chmod คำสั่งตามภาพ

$ chmod +x  hello.sh

สุดท้าย ให้รันเชลล์สคริปต์โดยใช้คำสั่งใดคำสั่งหนึ่ง:

$ bash hello.sh
OR
$ ./hello.sh
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

2. การใช้คำสั่งแบบมีเงื่อนไขเพื่อรันโค้ด

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

ตัวอย่างคำสั่ง if เท่านั้น

ถ้า คำสั่งสามารถใช้เพื่อทดสอบเงื่อนไขเดียวหรือหลายเงื่อนไข เราจะเริ่มต้นด้วยการใช้ if . ขั้นพื้นฐาน คำสั่งเพื่อทดสอบเงื่อนไขเดียว ถ้า คำสั่งถูกกำหนดโดย if ... fi บล็อก

if command
then
  statement
fi

มาดูเชลล์สคริปต์ด้านล่างกัน

#!/bin/bash
echo 'Enter the score'
read x

if [[ $x == 70 ]]; then
  echo 'Good job!'
fi

เชลล์สคริปต์ด้านบนจะแจ้งให้ผู้ใช้ให้คะแนนที่จัดเก็บในตัวแปร x . หากคะแนนตรงกับ 70 สคริปต์ส่งคืนผลลัพธ์ “ทำได้ดีมาก! ” ตัวดำเนินการเปรียบเทียบ == ใช้เพื่อทดสอบว่าคะแนนที่ป้อนซึ่งเก็บไว้ในตัวแปร x , เท่ากับ 100 .

วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

ตัวดำเนินการเปรียบเทียบอื่นๆ ที่คุณสามารถใช้ได้ ได้แก่:

  • -eq – เท่ากับ
  • -ne – ไม่เท่ากับ
  • -lt – น้อยกว่า
  • -le – น้อยกว่าหรือเท่ากับ
  • -lt – น้อยกว่า
  • -ge – มากกว่าหรือเท่ากับ

ตัวอย่างเช่น if-statement บล็อกด้านล่างพิมพ์ว่า 'ทำงานหนักขึ้น ’ หากคะแนนอินพุตมีค่าน้อยกว่า 50 .

if [[ $x -lt 50 ]]; then
  echo 'Work Harder!'
fi
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

ตัวอย่างประโยค if-else

สำหรับสถานการณ์ที่คุณมีผลลัพธ์ที่เป็นไปได้ 2 อย่าง:– ไม่ว่าสิ่งนี้หรือสิ่งนั้น – คำสั่ง if-else นั้นมีประโยชน์

if command
then
  statement1
else
  statement2
fi

สคริปต์ด้านล่างอ่านคะแนนอินพุตและตรวจสอบว่ามากกว่าหรือเท่ากับ 70 .

หากคะแนนมากกว่าหรือเท่ากับ 70 คุณได้รับ 'เยี่ยมมาก คุณผ่าน! ' ข้อความ. อย่างไรก็ตาม หากคะแนนต่ำกว่า 70 , ผลลัพธ์ 'คุณล้มเหลว ’ จะถูกพิมพ์

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -ge 70 ]]; then
  echo 'Great job, You passed!'
else
  echo  'You failed'
fi
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

ตัวอย่างคำสั่ง if-elif-else

ในสถานการณ์ที่มีเงื่อนไขหลายอย่างและผลลัพธ์ที่แตกต่างกัน if-elif-else มีการใช้คำสั่ง คำสั่งนี้มีรูปแบบดังต่อไปนี้

if condition1
then
  statement1
elif condition2
then
  statement2
else
  statement3
fi

ตัวอย่างเช่น เรามีสคริปต์สำหรับลอตเตอรีที่ตรวจสอบว่าหมายเลขที่ป้อนคือ 90 , 60 หรือ 30 .

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -eq 90 ]];
then
  echo “You have won the First Prize”

elif [[ $x -eq 60 ]];
then
  echo “You have won the Second Prize”

elif [[ $x -eq 30 ]];
then 
  echo “You have won the Second Prize”
else
  echo “Please try again”
fi
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

3. การใช้คำสั่ง if กับ AND Logic

คุณสามารถใช้ ถ้า คำสั่งข้าง และ ตัวดำเนินการตรรกะเพื่อดำเนินงานหากตรงตามเงื่อนไขสองข้อ && ตัวดำเนินการใช้เพื่อแสดงถึง และ ตรรกะ

#!/bin/bash

echo 'Please Enter your user_id'
read user_id

echo 'Please Enter your tag_no'
read tag_id

if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]];
then
  echo “Login successful”
else
  echo “Login failure”
fi

5. การใช้คำสั่ง if กับลอจิก OR

เมื่อใช้ OR ตรรกะที่แสดงด้วย || สัญลักษณ์ เงื่อนไขใดเงื่อนไขหนึ่งต้องสอดคล้องกับสคริปต์เพื่อให้ได้ผลลัพธ์ที่คาดหวัง

#!/bin/bash

echo 'Please enter a random number'
read number

if [[ (number -eq 55 || number -eq 80) ]];
then
 echo 'Congratulations! You’ve won'
else
 echo 'Sorry, try again'
fi
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

ใช้โครงสร้างการวนซ้ำ

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

ขณะวนซ้ำ

นี่เป็นหนึ่งในลูปที่ง่ายที่สุดในการทำงานด้วย ไวยากรณ์ค่อนข้างง่าย:

while  <some test>
do
 commands
done

วง while ด้านล่างแสดงตัวเลขทั้งหมดตั้งแต่ 1 ถึง 10 เมื่อดำเนินการ

#!/bin/bash
# A simple while loop
counter=1
while [ $counter -le 10 ]
 do
echo $counter
 ((counter++))
done

มาพูดถึงวง while กัน:

ตัวแปร ตัวนับ เริ่มต้นเป็น 1 . และในขณะที่ตัวแปรมีค่าน้อยกว่าหรือเท่ากับ 10 ค่าของตัวนับจะเพิ่มขึ้นจนกว่าเงื่อนไขจะเป็นที่พอใจ บรรทัด echo $counter พิมพ์ตัวเลขทั้งหมดตั้งแต่ 1 ถึง 10

วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

สำหรับลูป

ชอบในขณะที่ วนซ้ำ , สำหรับลูป ใช้ในการรันโค้ดซ้ำๆ เช่น. เรียกใช้โค้ดซ้ำให้มากที่สุดเท่าที่จะทำได้โดยผู้ใช้กำหนด

ไวยากรณ์คือ:

for var in 1 2 3 4 5 N
do
 command1
 command2
done

สำหรับลูป ด้านล่างวนซ้ำถึง 1 ถึง 10 และประมวลผลค่าบนหน้าจอ

วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

วิธีที่ดีกว่าในการบรรลุเป้าหมายนี้คือการกำหนดช่วงโดยใช้เครื่องหมายปีกกาคู่ { } ตามที่แสดงแทนการพิมพ์ตัวเลขทั้งหมด

#!/bin/bash
# Specify range in a for loop

for num in {1..10}
do
  echo $num
done

ทุบตีพารามิเตอร์ตำแหน่ง

พารามิเตอร์ตำแหน่งเป็นตัวแปรพิเศษที่อ้างอิงในสคริปต์เมื่อมีการส่งผ่านค่าบนเชลล์แต่ไม่สามารถกำหนดได้ พารามิเตอร์ตำแหน่งเรียกใช้จาก $0 $1 $2 $3 …… ถึง $9 . นอกเหนือจาก $9 ค่าพารามิเตอร์จะต้องอยู่ในวงเล็บปีกกาเช่น ${10}, ${11} … เป็นต้น

เมื่อเรียกใช้งานสคริปต์ พารามิเตอร์ตำแหน่งแรกคือ $0 ใช้ชื่อของเชลล์สคริปต์ $1 พารามิเตอร์รับตัวแปรแรกที่ส่งผ่านไปยังเทอร์มินัล $2 ที่สอง $3 ที่สามเป็นต้น

มาสร้างสคริปต์ test.sh กันเถอะ

#!/bin/bash
echo "The name of the script is: " $0
echo "My first name is: " $1
echo "My second name is: " $2

ถัดไป รันสคริปต์และระบุชื่อและชื่อที่สองเป็นอาร์กิวเมนต์:

# bash test.sh James Kiarie
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

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

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

รหัสออกจากคำสั่งเชลล์

เริ่มต้นด้วยการตอบคำถามง่ายๆ รหัสทางออก . คืออะไร ?

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

สถานะการออก 0 หมายความว่าคำสั่งดำเนินการสำเร็จโดยไม่มีข้อผิดพลาด อะไรก็ได้ระหว่าง 1 ถึง 255 แสดงว่าคำสั่งล้มเหลวหรือดำเนินการไม่สำเร็จ

หากต้องการค้นหาสถานะการออกของคำสั่ง ให้ใช้ $? ตัวแปรเชลล์

สถานะการออก 1 ชี้ไปที่ข้อผิดพลาดทั่วไปหรือข้อผิดพลาดที่ไม่ได้รับอนุญาต เช่น การแก้ไขไฟล์โดยไม่มีการอนุญาต sudo

สถานะการออก 2 ชี้ถึงการใช้คำสั่งหรือตัวแปรเชลล์ในตัวที่ไม่ถูกต้อง

สถานะการออก 127 สถานะชี้ไปที่คำสั่งที่ผิดกฎหมายซึ่งมักจะให้ 'ไม่พบคำสั่ง ’ ผิดพลาด

วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

การประมวลผลผลลัพธ์ของคำสั่งเชลล์ภายในสคริปต์

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

variable=$(command)
OR
variable=$(/path/to/command)
OR
variable=$(command argument 1 argument 2 ...)

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

#!/bin/bash

today=$(date)

echo “Today is $today”
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

ลองมาอีกตัวอย่างหนึ่ง สมมติว่าคุณต้องการค้นหาผู้ใช้ล็อกอินที่ถูกต้องบนระบบ Linux ของคุณ คุณจะไปเกี่ยวกับมันได้อย่างไร ขั้นแรก รายชื่อผู้ใช้ทั้งหมด (ทั้งระบบ กระบวนการ และผู้ใช้ที่เข้าสู่ระบบ) จะถูกเก็บไว้ใน /etc/passwd ไฟล์.

หากต้องการดูไฟล์ คุณต้องใช้คำสั่ง cat อย่างไรก็ตาม หากต้องการจำกัดให้แคบลงเพื่อเข้าสู่ระบบผู้ใช้ ให้ใช้คำสั่ง grep เพื่อค้นหาผู้ใช้ด้วย /bin/bash และใช้ cut -c 1-10 คำสั่งตามที่แสดงเพื่อแสดงอักขระ 10 ตัวแรกของชื่อ

เราได้จัดเก็บ คำสั่ง cat ถึง login_users ตัวแปร

#!/bin/bash
login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10)
echo 'This is the list of login users:
echo $login_users
วิธีสร้างเชลล์สคริปต์อย่างง่ายใน Linux

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