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

วิธีการเขียนและใช้งาน Custom Shell Function and Libraries

ใน 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 
วิธีการเขียนและใช้งาน Custom Shell Function and Libraries

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

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