Kako pisati i koristiti prilagođene funkcije ljuske i knjižnice


U Linuxu nam ljuske skripte pomažu na toliko različitih načina, uključujući izvođenje ili čak automatizaciju određenih zadataka administracije sustava, stvaranje jednostavnih alata naredbenog retka i još mnogo toga.

U ovom ćemo uputstvu novim korisnicima Linuxa pokazati gdje pouzdano pohraniti prilagođene skripte ljuske, objasniti kako pisati prilagođene funkcije ljuske i knjižnice, koristiti funkcije iz knjižnica u drugim skriptama.

Gdje čuvati skripte školjke

Da bi se vaše skripte izvodile bez upisivanja pune/apsolutne staze, moraju se pohraniti u jedan od direktorija u varijabli okruženja $PATH.

Da biste provjerili svoj $PATH, izdajte naredbu u nastavku:

$ echo $PATH

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

Uobičajeno, ako kanta za direktorij postoji u korisničkom kućnom direktoriju, automatski se uključuje u njegov/njezin $PATH. Ovdje možete pohraniti svoje skripte ljuske.

Stoga izradite bin direktorij (koji također može pohraniti Perl, Awk ili Python skripte ili bilo koji drugi program):

$ mkdir ~/bin

Zatim stvorite direktorij pod nazivom lib (kratica za knjižnice) u kojem ćete držati vlastite knjižnice. U njemu također možete držati knjižnice za druge jezike kao što su C, Python i tako dalje. Ispod nje stvorite još jedan direktorij zvan sh; ovo će posebno pohraniti vaše knjižnice školjki:

$ mkdir -p ~/lib/sh 

Izradite vlastite funkcije i knjižnice školjke

Funkcija ljuske je skupina naredbi koje izvršavaju poseban zadatak u skripti. Rade slično procedurama, potprogramima i funkcijama u drugim programskim jezicima.

Sintaksa za pisanje funkcije je:

function_name() { list of commands }

Na primjer, u skriptu možete napisati funkciju koja će prikazati datum na sljedeći način:

showDATE() {date;}

Svaki put kad želite prikazati datum, jednostavno pozovite gornju funkciju koristeći njen naziv:

$ showDATE

Knjižnica ljuske je jednostavno skripta ljuske, međutim, knjižnicu možete napisati samo za pohranu vaših funkcija koje kasnije možete nazvati iz drugih skripti ljuske.

Ispod je primjer knjižnice koja se zove libMYFUNCS.sh u mom direktoriju ~/lib/sh s više primjera funkcija:

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

Spremite datoteku i učinite skriptu izvršnom.

Kako pozvati funkcije iz knjižnice

Da biste koristili funkciju u lib-u, prije svega morate uključiti lib u skriptu ljuske gdje će se funkcija koristiti, u donjem obliku:

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

Dakle, koristili biste funkciju printUSERDETS iz lib ~/lib/sh/libMYFUNCS.sh u drugoj skripti kao što je prikazano dolje.

Ne morate u ovu skriptu upisivati drugi kod za ispis pojedinosti korisnika, jednostavno pozovite postojeću funkciju.

Otvorite novu datoteku s imenom test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Spremite ga, a zatim napravite skriptu izvršnom i pokrenite je:

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

U ovom smo članku pokazali gdje pouzdano pohraniti skripte ljuske, kako napisati vlastite funkcije ljuske i knjižnice, pozvati funkcije iz knjižnica u normalnim skriptama ljuske.

Dalje ćemo objasniti izravan način konfiguriranja Vima kao IDE-a za Bash skriptiranje. Do tada, uvijek budite povezani s TecMintom i podijelite svoja razmišljanja o ovom vodiču putem obrasca za povratne informacije u nastavku.