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.