ใน 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 (ย่อมาจากห้องสมุด) ที่คุณจะเก็บห้องสมุดของคุณเอง คุณยังสามารถเก็บไลบรารีสำหรับภาษาอื่นๆ เช่น C, Python และอื่นๆ ไว้ในนั้นได้ ภายใต้นั้น ให้สร้างไดเร็กทอรีอื่นชื่อ sh; สิ่งนี้จะจัดเก็บไลบรารีเชลล์ของคุณโดยเฉพาะ:
$ mkdir -p ~/lib/sh
สร้างฟังก์ชันเชลล์และไลบรารีของคุณเอง
ฟังก์ชันเชลล์ เป็นกลุ่มคำสั่งที่ทำงานพิเศษในสคริปต์ ทำงานคล้ายกับโพรซีเดอร์ รูทีนย่อย และฟังก์ชันในภาษาการเขียนโปรแกรมอื่นๆ
ไวยากรณ์สำหรับการเขียนฟังก์ชันคือ:
function_name() { list of commands }
ตัวอย่างเช่น คุณสามารถเขียนฟังก์ชันในสคริปต์เพื่อแสดง วันที่ ดังนี้
showDATE() {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 ~/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 สำหรับการเขียนสคริปต์ทุบตี ในระหว่างนี้ ให้ติดต่อกับ TecMint อยู่เสมอ และแชร์ความคิดเห็นของคุณเกี่ยวกับคู่มือนี้ผ่านแบบฟอร์มคำติชมด้านล่าง