Documente Academic
Documente Profesional
Documente Cultură
UNIX
Utilizator (infoiasi)$ a = 10
bash: a: command not found
(infoiasi)$ a=10
Execuie Depanare
(infoiasi)$ echo $a
Script bash 10
(infoiasi)$ v="-o cgi-bin"
Variabile Pasarea variabilelor Forme speciale (infoiasi)$ ls $v
predefinite spre script ale variabilelor total 4
-rwxr-xr-x 1 user 99 Nov 27 18:42 form.cgi
(infoiasi)$ echo $((12 + 21/3))
Controlul fluxului
19
Operaii Operaii (infoiasi)$ v=15 ; z=4
Comparaii
cu fiiere matematice
(infoiasi)$ echo $((5 - $v % $z))
2
(infoiasi)$ echo `expr 3 - 1`
Comenzi Comenzi bash 2
UNIX/Linux interne
continu cu urmtorul elif sau else. Cnd se ajunge pe o ramur elif echo "Opiune necunoscut..."
se execut ca i cum ar fi un alt if. n programul de mai jos (denumit fi
rmtemp) apare structura if: done
Comanda rm terge fiierul temp dac exist i poate fi ters (e.g. uti- Structura for are urmtoarea sintax:
lizatorul care apeleaz script-ul are drepturile necesare), altfel afieaz
un mesaj de eroare (mesajul nu apare pe ecran ntruct ieirea standard for var [ in text ]
de eroare este redirectat la /dev/null). do
Sintaxa structurii condiionale case este cea de mai jos: lista_de_comenzi
done
case expresie in
[ sir_de_valori_1 ")" lista_de_comenzi_1 ";;" ] Variabila var va lua succesiv valori din textul specificat (cte o linie).
... Dac textul lipsete variabila va lua ca valori parametri transmii n linia
[ sir_de_valori_N ")" lista_de_comenzi_N ";;" ] de comand.
esac Programul de mai jos va genera un fiier coninnd informaii des-
pre fiecare utilizator conectat:
Mai nti se evalueaz expresia dup care se ncerc o potrivire cu una
din valorile din irurile specificate. Dac s-a gsit o potrivire (acesta va for U in `who | cut -c1-8`
fi prima n ordinea definirii valorilor) se va executa lista de comenzi do
corespunztoare, dup care structura case se va termina. Cuvntul esac finger $U >> lista_utilizatori
este oglinditul lui case i termin o construcie case. done
Drept exemplu, considerm c fiierul opt are urmtorul coninut:
Dup cum am vzut, n bash n locul construciei `who | cut -c1-8`
#!/bin/bash putem scrie $( who | cut -c1-8 ).
case $1 in Sintaxa structurii repetitive while este furnizat n continuare:
-a|-[fx-z] ) echo "S-a detectat o optiune valida";;
-* ) echo "S-a detectat o optiune" ;; while
stop|start ) echo "S-a detectat un parametru valid" ;; lista_de_comenzi_1
?* ) echo "S-a detectat un parametru" ;; do
* ) echo "Mod de utilizare: $0 param" ;; lista_de_comenzi_2
esac done
Pentru delimitarea mai multor valori se utilizeaz caracterul |. Pot Se execut prima list de comenzi. Dac ultima comand din prima list
apare wildcard-uri (* va ine loc de zero sau multe caractere, iar ? va se ncheie cu succes (returneaz un cod de eroare nul), atunci se execut i
ine locul unui singur caracter). Primul ir este echivalent cu -a|-f|- a doua list dup care se reia bucla, altfel se iese din structura repetitiv.
x|-y|-z. Al doilea va selecta toate cuvintele care ncep cu caracterul -. Urmtorul script va simula execuia comenzii cat:
Construcia ?* va accepta toate cuvintele nevide (semnul de ntrebare
cere existena unui caracter). while read -r linie
Pentru a iei forat dintr-un script sau dintr-o funcie definit de do
utilizator (vezi mai jos) vom utiliza comanda return urmat de un cod echo "$linie"
de stare. Comanda exit va determina prsirea shell-ului curent. done
O alt comand util este select care permite realizarea de inter-
aciuni n mod text. Urmtorul exemplu d posibilitatea utilizatorului Pentru a iei forat dintr-un ciclu repetitiv se poate folosi break, iar
s aleag ntre dou opiuni: pentru a trece direct la urmtoarea iteraie se va utiliza continue, ca n
limbajele C sau Java. Un exemplu:
OPTIUNI="Salutari Iesire"
select opt in $OPTIUNI; do for dir in $PATH; do
if [ $opt = "Iesire" ]; then test -z "$dir" && dir=.
echo "Am terminat..." if test -f $dir/tail; then
exit tail="$dir/tail"
elif [ $opt = "Salutari" ]; then break
echo "Salut! Ce mai facei?" fi
else # nici una din optiuni done
clear # stergem ecranul echo "Am gasit comanda tail: $tail"