ใน Linux สคริปต์เชลล์ช่วยเราในหลายวิธีที่แตกต่างกัน รวมถึงการดำเนินการหรือแม้แต่อัตโนมัติงานบริหารระบบบางอย่าง สร้างเครื่องมือบรรทัดคำสั่งง่ายๆ และอื่นๆ อีกมากมาย
ในคู่มือนี้ เราจะแสดงให้ผู้ใช้ Linux ใหม่ๆ รู้ว่าจะจัดเก็บสคริปต์เชลล์กำหนดเองได้ที่ไหนอย่างน่าเชื่อถือ อธิบายวิธีเขียนฟังก์ชันเชลล์กำหนดเองและไลบรารี ใช้ฟังก์ชันจากไลบรารีในสคริปต์อื่นๆ
ที่จะจัดเก็บสคริปต์เชลล์
เพื่อให้รันสคริปต์ของคุณได้โดยไม่ต้องพิมพ์พาธเต็ม/สัมบูรณ์ พวกเขาต้องจัดเก็บอยู่ในหนึ่งในไดเรกทอรีในตัวแปรสภาพแวดล้อม $PATH
เพื่อตรวจสอบ $PATH ของคุณ ให้รันคำสั่งด้านล่าง:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
ปกติแล้ว หากไดเรกทอรี bin มีอยู่ในไดเรกทอรีบ้านของผู้ใช้ มันจะถูกรวมอยู่ใน $PATH ของเขา/เธอโดยอัตโนมัติ คุณสามารถจัดเก็บสคริปต์เชลล์ของคุณที่นี่
ดังนั้น ให้สร้างไดเรกทอรี bin (ซึ่งอาจจัดเก็บสคริปต์ Perl, Awk หรือ Python หรือโปรแกรมอื่นๆ):
$ mkdir ~/bin
ต่อไป สร้างไดเรกทอรีชื่อ lib (ย่อมาจาก libraries) ที่คุณจะเก็บไลบรารีของคุณเอง คุณยังสามารถเก็บไลบรารีสำหรับภาษาอื่นๆ เช่น C, Python และอื่นๆ ได้ที่นี่ ภายใต้มัน สร้างไดเรกทอรีอีกอันชื่อ sh; ไดเรกทอรีนี้จะจัดเก็บไลบรารีเชลล์ของคุณโดยเฉพาะ:
$ mkdir -p ~/lib/sh
สร้างฟังก์ชันและไลบรารีเชลล์ของคุณเอง
ฟังก์ชันเชลล์ เป็นกลุ่มคำสั่งที่ทำงานเฉพาะในสคริปต์ พวกมันทำงานคล้ายกับขั้นตอน (procedures), สubroutines และฟังก์ชันในภาษาโปรแกรมมิ่งอื่นๆ
ไวยากรณ์สำหรับการเขียนฟังก์ชันคือ:
function_name() { list of commands }
ตัวอย่างเช่น คุณสามารถเขียนฟังก์ชันในสคริปต์เพื่อแสดง date ได้ดังนี้:
showDATE() {date;}
ทุกครั้งที่คุณต้องการแสดง date เพียงเรียกใช้ฟังก์ชันข้างต้นโดยใช้ชื่อของมัน:
$ showDATE
ไลบรารีเชลล์ คือสคริปต์เชลล์เพียงอย่างเดียว อย่างไรก็ตาม คุณสามารถเขียนไลบรารีเพื่อจัดเก็บฟังก์ชันของคุณเท่านั้น ที่คุณสามารถเรียกใช้จากสคริปต์เชลล์อื่นๆ ภายหลัง
ด้านล่างคือตัวอย่างของไลบรารีชื่อ libMYFUNCS.sh ในไดเรกทอรี ~/lib/sh ของฉัน พร้อมตัวอย่างฟังก์ชันเพิ่มเติม:
#!/bin/bash
#Function to clearly list directories in PATH
showPATH() {
oldifs="$IFS" #store old internal field separator
IFS=: #specify a new internal field separator
for DIR in $PATH ; do
echo $DIR
done
IFS="$oldifs" #restore old internal field separator
}
#Function to show logged user
showUSERS() {
echo -e "Below are the user logged on the system:\n"
w
}
#Print a user's details
printUSERDETS() {
oldifs="$IFS" #store old internal field separator
IFS=: #specify a new internal field separator
read -p "Enter user name to be searched:" uname #read username
echo "" #read and store from a here string values into variables using : as a field delimiter
read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep "^$uname")"
#print out captured values
echo -e "Username is : $username\n"
echo -e "User's ID : $uid\n"
echo -e "User's GID : $gid\n"
echo -e "User's Comments : $comments\n"
echo -e "User's Home Dir : $homedir\n"
echo -e "User's Shell : $shell\n"
IFS="$oldifs" #store old internal field separator
}
บันทึกไฟล์และทำให้สคริปต์รันได้
วิธีเรียกใช้ฟังก์ชันจากไลบรารี
เพื่อใช้ฟังก์ชันใน lib คุณต้องรวม lib ในสคริปต์เชลล์ที่จะใช้ฟังก์ชันก่อน ในรูปแบบด้านล่าง:
$ ./path/to/lib OR $ source /path/to/lib
ดังนั้น คุณจะใช้ฟังก์ชัน printUSERDETS จากไลบรารี ~/lib/sh/libMYFUNCS.sh ในสคริปต์อื่นดังแสดงด้านล่าง
คุณไม่ต้องเขียนโค้ดอื่นในสคริปต์นี้เพื่อพิมพ์รายละเอียดของผู้ใช้คนใดคนหนึ่ง เพียงเรียกใช้ฟังก์ชันที่มีอยู่
เปิดไฟล์ใหม่ชื่อ test.sh:
#!/bin/bash #include lib . ~/lib/sh/libMYFUNCS.sh #use function from lib printUSERDETS #exit script exit 0
บันทึก แล้วทำให้สคริปต์รันได้และรันมัน:
$ chmod 755 test.sh $ ./test.sh
ในบทความนี้ เราแสดงให้คุณเห็นว่าจะจัดเก็บสคริปต์เชลล์ได้ที่ไหนอย่างน่าเชื่อถือ วิธีเขียนฟังก์ชันและไลบรารีเชลล์ของคุณเอง เรียกใช้ฟังก์ชันจากไลบรารีในสคริปต์เชลล์ทั่วไป
ต่อไป เราจะอธิบายวิธีตรงไปตรงมาในการกำหนดค่า Vim เป็น IDE สำหรับการเขียนสคริปต์ Bash จนกว่าจะพบกันใหม่ ขอให้คุณติดต่อกับ TecMint อยู่เสมอ และแบ่งปันความคิดเห็นเกี่ยวกับคู่มือนี้ผ่านแบบฟอร์มความคิดเห็นด้านล่างครับ