Vyhledávání na webu

Jak psát a používat vlastní funkce prostředí a knihovny


V Linuxu nám skripty shellu pomáhají mnoha různými způsoby, včetně provádění nebo dokonce automatizace určitých úloh správy systému, vytváření jednoduchých nástrojů příkazového řádku a mnoha dalších.

V této příručce ukážeme novým uživatelům Linuxu, kam spolehlivě ukládat vlastní skripty shellu, vysvětlíme, jak psát vlastní funkce a knihovny shellu, používat funkce z knihoven v jiných skriptech.

Kam ukládat skripty Shell

Aby bylo možné spouštět skripty bez zadávání úplné/absolutní cesty, musí být uloženy v jednom z adresářů v proměnné prostředí ` PATH.

Chcete-li zkontrolovat ` PATH, zadejte níže uvedený příkaz:

echo $PATH

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

Obvykle, pokud adresář bin existuje v domovském adresáři uživatele, je automaticky zahrnut do jeho/její ` PATH. Zde můžete ukládat své skripty shellu.

Proto vytvořte adresář bin (ve kterém mohou být uloženy také skripty Perl, Awk nebo Python nebo jakékoli jiné programy):

mkdir ~/bin

Dále vytvořte adresář s názvem lib (zkratka pro knihovny), kde budete mít své vlastní knihovny. Můžete v něm také uchovávat knihovny pro jiné jazyky, jako je C, Python a tak dále. Pod ním vytvořte další adresář s názvem sh; to vám uloží zejména knihovny shellů:

mkdir -p ~/lib/sh 

Vytvořte si vlastní funkce Shell a knihovny

Funkce shellu je skupina příkazů, které provádějí speciální úlohu ve skriptu. Fungují podobně jako procedury, podprogramy a funkce v jiných programovacích jazycích.

Syntaxe pro zápis funkce je:

function_name() { list of commands }

Můžete například napsat funkci ve skriptu, která zobrazí datum takto:

showDATE() {date;}

Pokaždé, když chcete zobrazit datum, jednoduše vyvolejte výše uvedenou funkci pomocí jejího názvu:

showDATE

Knihovna shellu je jednoduše skript shellu, můžete však napsat knihovnu, do které budou ukládány pouze funkce, které můžete později volat z jiných skriptů shellu.

Níže je uveden příklad knihovny s názvem libMYFUNCS.sh v mém adresáři ~/lib/sh s dalšími příklady funkcí:

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

Uložte soubor a vytvořte spustitelný skript.

Jak vyvolat funkce z knihovny

Chcete-li použít funkci v lib, musíte nejprve zahrnout lib do skriptu shellu, kde bude funkce použita, ve formuláři níže:

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

Takže byste použili funkci printUSERDETS z knihovny ~/lib/sh/libMYFUNCS.sh v jiném skriptu, jak je uvedeno níže.

Pro tisk podrobností konkrétního uživatele nemusíte do tohoto skriptu psát další kód, jednoduše zavolejte existující funkci.

Otevřete nový soubor s názvem test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Uložte jej, poté vytvořte spustitelný skript a spusťte jej:

chmod 755 test.sh
./test.sh 

V tomto článku jsme si ukázali, kam spolehlivě ukládat skripty shellu, jak psát vlastní funkce a knihovny shellu, vyvolávat funkce z knihoven v běžných skriptech shellu.

Dále vysvětlíme přímý způsob konfigurace Vim jako IDE pro skriptování v Bash. Do té doby vždy zůstaňte ve spojení se společností TecMint a také se podělte o své názory na tuto příručku prostřednictvím formuláře pro zpětnou vazbu níže.