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