Sistema Operatiu Linux

Unitat: programació d'scripts

Tema: introducció als shell-scripts


Shell-scripts

Un shell-script és un fitxer de text que conté comandaments que el shell pot interpretar i executar. Recordem que podem utilitzar diversos shells en un entorn Unix, com ara el bash o l'sh. Donat que hi han diferències entre els diferents shells, és una bona pràctica posar com a primera línia de l'script un comentari que informi del shell adequat per executar l'script. Per exemple:

#!/bin/sh

indica que s'utilitzi el shell sh situat en el directori bin. Les línies que comencen per # són comentaris.
 

Camí de recerca de fitxers

Si l'script utilitza determinats fitxers que estan en directoris no inclosos en el PATH per defecte, es convenient incloure una instrucció en l'script per modificar el PATH. Per exemple:

PATH=$PATH:/usuari/bin:usuari/scripts; export PATH
 

Comprobació dels paràmetres

Si l'script utilitza paràmetres ($1, $2, etc.) hauría de comprobar que són correctes. Per exemple, la variable $# ens dóna el nombre de paràmetres que ha introduït l'usuari en la línia de comandaments. Si el nostre script necessita dos paràmetres, aleshores amb una instrucció if podem fer la comprobació:

if [ $# -ne 2]; then
    echo calen 2 paràmetres, execució aturada
    exit 127
fi
 

Codis de finalització i retorn

La instrucció exit informa al shell de la finalització de l'execució de l'script, que pot ser correcte (codi 0) o bé incorrecte (codi diferent de 0). Per exemple:

if [ $# -ne 2]; then
    echo calen 2 paràmetres, execució aturada
    #manquen o sobren paràmetres: error número 127
    exit 127
else
    #tot correcte
    exit 0
fi

La variable $? informa de com ha acabat l'ùltim comandament que hem executat: 0 - ha acabat bé, 1- error d'execució. Per exemple:

ls; echo $?                  mostra el directori i després el codi 0 (finalització correcte)
ls noexisteix; echo $?       no troba el fitxer, mostra el codi 1 (finalització incorrecte)


Exercicis:

Crea un script comptar per verificar que el nombre de paràmetres escrits en la línia de comandaments és exactament igual a 1. Si no és així, acaba amb un missatge d'error i el codi d'error 127. Comprova que, en cas de finalització anormal de l'script, la variable $? val 1.



Tema següent: Estructures de control