La rularea unei aplicatii sau comenzi se returneaza intotdeauna un cod (exit status) care ne spune cum s-a terminat aplicatia. Daca codul returnat e 0 aplicatia a rulat fara nici un fel de probleme si treaba a fost dusa la bun sfarsit. Codul de iesire se poate gasi citind variabila $? care va contine codul ultimei aplicatii sau comenzi rulate. Ca exemplu folosim comanda date care va returna codul 0 pentru ca nu are ce sa nu functioneze in afisarea datei:
eu@Desktop:~$ date Tue May 13 07:52:42 EEST 2008 eu@Desktop:~$ echo $? 0 eu@Desktop:~$
Daca in schimb am avea o comanda care poate da gres, si in exemplul nostru va da gres, codul returnat va fi altul. De exemplu, daca incercam sa rulam o comanda inexistenta vom primi codul de eroare 127 care este generat de interpretor si care ne spune ca nu s-a putut rula comanda data.
eu@Desktop:~$ comandaInexistenta bash: comandaInexistenta: command not found eu@Desktop:~$ echo $? 127 eu@Desktop:~$
Variabila $? poate fi utilizata si in scripturi. Cu ajutorul variabilei putem apela alte comenzi iar apoi verificam rezultatul. Un exemplu util ar fi cautarea unui sir de caractere intr-un fisier. Folosim test.sh, un script care verifica existenta unui sir in fisierul /etc/shells, pentru a exemplifica:
#!/bin/bash sir="bash" grep $sir /etc/shells > /dev/null output=$? if [ $output -eq 0 ];then echo “Sirul cautat exista” else echo “Sirul cautat nu exista” fi
Codul de mai sus se salveaza in fisierul test.sh, ii dam permisiuni de rulare si apoi il rulam. Daca stringul cautat exista in fisierul /etc/shells $output va avea valoarea 0. In caz contrar va avea valoarea 1.
eu@Desktop:/tmp$ chmod 755 test.sh eu@Desktop:/tmp$ ./test.sh Sirul cautat exista eu@Desktop:/tmp$
Popularity: 1% [?]


