Cum să scrieți și să utilizați funcții și biblioteci personalizate Shell
În Linux, scripturile shell ne ajută în atât de multe moduri diferite, inclusiv efectuarea sau chiar automatizarea anumitor sarcini de administrare a sistemului, crearea de instrumente simple de linie de comandă și multe altele.
În acest ghid, vom arăta noilor utilizatori Linux unde să stocheze în mod fiabil scripturile shell personalizate, vom explica cum să scrieți funcții și biblioteci shell personalizate, cum să folosiți funcțiile din biblioteci în alte script-uri.
Unde să stocați scripturile Shell
Pentru a rula scripturile fără a introduce o cale completă/absolută, acestea trebuie să fie stocate într-unul dintre directoarele din variabila de mediu ` PATH.
Pentru a vă verifica ` PATH, lansați comanda de mai jos:
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
În mod normal, dacă directorul bin există într-un director principal al utilizatorilor, acesta este inclus automat în ` PATH. Vă puteți stoca scripturile shell aici.
Prin urmare, creați directorul bin (care poate stoca și scripturi Perl, Awk sau Python sau orice alte programe):
mkdir ~/bin
Apoi, creați un director numit lib (prescurtare de la biblioteci) în care vă veți păstra propriile biblioteci. De asemenea, puteți păstra biblioteci pentru alte limbi, cum ar fi C, Python și așa mai departe, în el. Sub acesta, creați un alt director numit sh; aceasta vă va stoca în special bibliotecile shell:
mkdir -p ~/lib/sh
Creați-vă propriile funcții Shell și biblioteci
O funcție shell este un grup de comenzi care efectuează o sarcină specială într-un script. Ele funcționează în mod similar cu procedurile, subrutinele și funcțiile din alte limbaje de programare.
Sintaxa pentru scrierea unei funcții este:
function_name() { list of commands }
De exemplu, puteți scrie o funcție într-un script pentru a afișa data după cum urmează:
showDATE() {date;}
De fiecare dată când doriți să afișați data, pur și simplu invocați funcția de mai sus folosind numele acesteia:
showDATE
O bibliotecă shell este pur și simplu un script shell, cu toate acestea, puteți scrie o bibliotecă pentru a stoca doar funcțiile pe care le puteți apela ulterior din alte script-uri shell.
Mai jos este un exemplu de bibliotecă numită libMYFUNCS.sh în directorul meu ~/lib/sh, cu mai multe exemple de funcții:
#!/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
}
Salvați fișierul și faceți scriptul executabil.
Cum să invocați funcții dintr-o bibliotecă
Pentru a utiliza o funcție într-o lib, trebuie să includeți în primul rând lib în scriptul shell în care va fi utilizată funcția, în forma de mai jos:
./path/to/lib
OR
source /path/to/lib
Deci, ați folosi funcția printUSERDETS din lib ~/lib/sh/libMYFUNCS.sh într-un alt script, așa cum se arată mai jos.
Nu trebuie să scrieți alt cod în acest script pentru a imprima detaliile unui anumit utilizator, pur și simplu apelați o funcție existentă.
Deschideți un fișier nou cu numele test.sh:
#!/bin/bash
#include lib
. ~/lib/sh/libMYFUNCS.sh
#use function from lib
printUSERDETS
#exit script
exit 0
Salvați-l, apoi faceți scriptul executabil și rulați-l:
chmod 755 test.sh
./test.sh
În acest articol, v-am arătat unde să stocați în mod fiabil scripturile shell, cum să scrieți propriile funcții și biblioteci shell, cum să invocați funcții din biblioteci în scripturile shell normale.
În continuare, vom explica o modalitate simplă de a configura Vim ca IDE pentru scripting Bash. Până atunci, rămâneți mereu conectat la TecMint și, de asemenea, împărtășiți-vă părerile despre acest ghid prin intermediul formularului de feedback de mai jos.