Kuidas kirjutada ja kasutada kohandatud kestafunktsioone ja teeke


Linuxis aitavad shelliskriptid meid mitmel erineval viisil, sealhulgas teatud süsteemihalduse ülesannete täitmine või isegi automatiseerimine, lihtsate käsurea tööriistade loomine ja palju muud.

Selles juhendis näitame uutele Linuxi kasutajatele, kuhu kohandatud shelliskripte usaldusväärselt salvestada, selgitame, kuidas kirjutada kohandatud shellifunktsioone ja teeke, kasutada raamatukogude funktsioone teistes skriptides.

Kust Shelli skripte säilitada

Skriptide käivitamiseks täis/absoluutset rada sisestamata tuleb need salvestada keskkonnamuutuja $PATH ühte kataloogidest.

$PATHi kontrollimiseks väljastage allpool käsk:

$ echo $PATH

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

Tavaliselt, kui kataloogide salv on kasutajate kodukataloogis, lisatakse see automaatselt tema $PATH-i. Siin saate oma shelliskripte salvestada.

Seetõttu looge prügikasti kataloog (mis võib salvestada ka Perli, Awki või Pythoni skripte või mis tahes muid programme):

$ mkdir ~/bin

Järgmisena looge kataloog nimega lib (lühend raamatukogudest), kus hoiate oma raamatukogusid. Selles saate hoida ka teiste keelte (näiteks C, Python ja nii edasi) teeke. Selle all looge teine kataloog nimega sh; see salvestab teile eriti shell-teegid:

$ mkdir -p ~/lib/sh 

Looge oma kestafunktsioonid ja raamatukogud

Kestfunktsioon on rühm käske, mis täidavad skripti eriülesannet. Need töötavad sarnaselt teiste programmeerimiskeelte protseduuride, alamprogrammide ja funktsioonidega.

Funktsiooni kirjutamise süntaks on järgmine:

function_name() { list of commands }

Näiteks võite skripti kirjutada funktsiooni kuupäeva kuvamiseks järgmiselt:

showDATE() {date;}

Iga kord, kui soovite kuupäeva kuvada, kasutage lihtsalt ülaltoodud funktsiooni selle nime abil:

$ showDATE

Shellikogu on lihtsalt shelliskript, kuid teegi saate kirjutada ainult oma funktsioonide salvestamiseks, mida saate hiljem helistada teistest shelliskriptidest.

Allpool on näide teegist nimega libMYFUNCS.sh minu kataloogis ~/lib/sh koos rohkemate funktsioonide näidetega:

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

Salvestage fail ja muutke skript käivitatavaks.

Kuidas kutsuda funktsioone raamatukogust

Funktsiooni kasutamiseks libis peate kõigepealt lisama libi shelliskripti, kus seda funktsiooni kasutatakse, järgmises vormis:

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

Seega kasutaksite funktsiooni printUSERDETS lib ~/lib/sh/libMYFUNCS.sh-st teises skriptis, nagu allpool näidatud.

Konkreetse kasutaja üksikasjade printimiseks ei pea te sellesse skripti kirjutama teist koodi, lihtsalt helistage olemasolevale funktsioonile.

Avage uus fail nimega test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Salvestage see, tehke skript käivitatavaks ja käivitage see:

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

Selles artiklis näitasime teile, kuhu saab shelliskripte usaldusväärselt salvestada, kuidas kirjutada oma shellifunktsioone ja teeke, kutsuda funktsioone raamatukogudest tavalistes shelliskriptides.

Järgmisena selgitame sirgjoonelist viisi Vimi konfigureerimiseks Bashi skriptimise IDE-na. Seni hoidke alati ühendust TecMintiga ja jagage oma mõtteid selle juhendi kohta ka allpool oleva tagasisidevormi kaudu.