Kako pisati in uporabljati funkcije in knjižnice lupine po meri


V Linuxu nam lupinski skripti pomagajo na toliko različnih načinov, vključno z izvajanjem ali celo avtomatizacijo nekaterih nalog skrbništva sistema, ustvarjanjem preprostih orodij ukazne vrstice in še veliko več.

V tem priročniku bomo novim uporabnikom Linuxa pokazali, kje naj zanesljivo shranjujejo skripte lupine po meri, razložili, kako napisati funkcije lupine po meri in knjižnice, uporabiti funkcije iz knjižnic v drugih skriptih.

Kje shraniti skripte lupine

Če želite izvajati skripte, ne da bi vnesli celotno/absolutno pot, jih je treba shraniti v enega od imenikov v spremenljivki okolja $PATH.

Če želite preveriti $PATH, izda spodnji ukaz:

$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Če običajno imenik obstaja v domačem imeniku uporabnikov, je samodejno vključen v njegov/njen $PATH. Tu lahko shranite svoje skripte lupine.

Zato ustvarite imenik bin (kamor lahko shranite tudi skripte Perl, Awk ali Python ali katere koli druge programe):

$ mkdir ~/bin

Nato ustvarite imenik z imenom lib (okrajšava za knjižnice), kjer boste hranili lastne knjižnice. V njem lahko shranite tudi knjižnice za druge jezike, kot so C, Python in tako naprej. Pod njim ustvarite še en imenik, imenovan sh; to bo še posebej shranilo vaše knjižnice lupine:

$ mkdir -p ~/lib/sh 

Ustvarite lastne funkcije in knjižnice lupine

Funkcija lupine je skupina ukazov, ki v skriptu izvajajo posebno nalogo. Delujejo podobno kot postopki, podprogrami in funkcije v drugih programskih jezikih.

Sintaksa za pisanje funkcije je:

function_name() { list of commands }

Na primer, lahko v skript napišete funkcijo, ki bo prikazala datum na naslednji način:

showDATE() {date;}

Vsakič, ko želite prikazati datum, preprosto prikličite zgornjo funkcijo z njenim imenom:

$ showDATE

Knjižnica lupine je preprosto lupinski skript, vendar lahko knjižnico napišete tako, da shrani samo vaše funkcije, ki jih lahko pozneje pokličete iz drugih skriptov lupine.

Spodaj je primer knjižnice z imenom libMYFUNCS.sh v mojem imeniku ~/lib/sh z več primeri funkcij:

#!/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
}

Shranite datoteko in naredite skript izvršljiv.

Kako priklicati funkcije iz knjižnice

Če želite uporabiti funkcijo v lib, morate najprej vključiti lib v skript lupine, kjer bo funkcija uporabljena, v spodnji obliki:

$ ./path/to/lib
OR
$ source /path/to/lib

Torej bi uporabili funkcijo printUSERDETS iz lib ~/lib/sh/libMYFUNCS.sh v drugem skriptu, kot je prikazano spodaj.

Za tiskanje podrobnosti o določenem uporabniku vam v tem skriptu ni treba napisati druge kode, preprosto pokličite obstoječo funkcijo.

Odprite novo datoteko z imenom test.sh:

#!/bin/bash 

#include lib
.  ~/lib/sh/libMYFUNCS.sh

#use function from lib
printUSERDETS

#exit script
exit 0

Shranite ga, nato naredite skript izvedljiv in ga zaženite:

$ chmod 755 test.sh
$ ./test.sh 

V tem članku smo vam pokazali, kam zanesljivo shraniti skripte lupine, kako napisati lastne funkcije lupine in knjižnice, priklicati funkcije iz knjižnic v običajnih skriptih lupine.

Nato bomo razložili neposreden način konfiguriranja Vima kot IDE za skriptiranje Bash. Do takrat ostanite vedno povezani s TecMintom in delite svoje misli o tem vodniku prek spodnjega obrazca za povratne informacije.