Kako napisati i koristiti prilagođene funkcije ljuske i biblioteke


U Linuxu, shell skripte nam pomažu na mnogo različitih načina, uključujući izvođenje ili čak automatizaciju određenih zadataka administracije sistema, kreiranje jednostavnih alata komandne linije i još mnogo toga.

U ovom vodiču ćemo novim korisnicima Linuxa pokazati gdje da pouzdano pohranjuju prilagođene shell skripte, objasnit ćemo kako pisati prilagođene funkcije ljuske i biblioteke, koristiti funkcije iz biblioteka u drugim skriptama.

Gdje pohraniti shell skripte

Da biste pokrenuli vaše skripte bez unošenja pune/apsolutne putanje, moraju biti pohranjene u jednom od direktorija u varijabli okruženja ` PATH.

Da provjerite svoj ` PUT, izdajte naredbu u nastavku:

echo $PATH

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

Obično, ako direktorij bin postoji u korisničkom početnom direktoriju, on se automatski uključuje u njegovu/njenu ` PATH. Ovdje možete pohraniti svoje shell skripte.

Stoga, kreirajte bin direktorij (koji također može pohraniti Perl, Awk ili Python skripte ili bilo koje druge programe):

mkdir ~/bin

Zatim kreirajte direktorij pod nazivom lib (skraćeno za biblioteke) u kojem ćete čuvati vlastite biblioteke. U njemu također možete držati biblioteke za druge jezike kao što su C, Python i tako dalje. Ispod njega kreirajte drugi direktorij pod nazivom sh; ovo će posebno pohraniti vaše shell biblioteke:

mkdir -p ~/lib/sh 

Kreirajte vlastite shell funkcije i biblioteke

funkcija ljuske je grupa naredbi koje obavljaju poseban zadatak u skripti. Oni rade slično procedurama, potprogramima i funkcijama u drugim programskim jezicima.

Sintaksa za pisanje funkcije je:

function_name() { list of commands }

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

showDATE() {date;}

Svaki put kada želite prikazati datum, jednostavno pozovite gornju funkciju koristeći njeno ime:

showDATE

Shell biblioteka je jednostavno shell skripta, međutim, možete napisati biblioteku koja će pohraniti samo svoje funkcije koje kasnije možete pozvati iz drugih shell skripti.

Ispod je primjer biblioteke pod nazivom libMYFUNCS.sh u mom ~/lib/sh direktoriju 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
}

Sačuvajte datoteku i učinite skriptu izvršnom.

Kako pozvati funkcije iz biblioteke

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

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

Dakle, koristite funkciju printUSERDETS iz lib ~/lib/sh/libMYFUNCS.sh u drugoj skripti kao što je prikazano ispod.

Ne morate pisati drugi kod u ovoj skripti da biste ispisali pojedinosti određenog korisnika, jednostavno pozovite postojeću funkciju.

Otvorite novi fajl pod imenom test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Sačuvajte ga, a zatim učinite skriptu izvršnom i pokrenite je:

chmod 755 test.sh
./test.sh 

U ovom članku smo vam pokazali gdje pouzdano skladištiti shell skripte, kako napisati vlastite shell funkcije i biblioteke, pozvati funkcije iz biblioteka u normalnim shell skriptama.

Zatim ćemo objasniti direktan način konfigurisanja Vima kao IDE za Bash skriptovanje. Do tada, uvijek ostanite povezani s TecMint-om i također podijelite svoje mišljenje o ovom vodiču putem obrasca za povratne informacije u nastavku.