You are on page 1of 15

www.uab.

cat

Fonaments
d’Enginyeria
Què és un script?

Un script és un arxiu de text que un intèrpret de


comandes interpreta i executa línia a línia.

S'utilitza per automatitzar tasques.

A dins hi trobarem:
• Llançament de comandes
• Variables
• Sentencies condicionals
• Estructures de control de flux (bucles entre d’ altres)
• I funcions
Creació d’un script bàsic

$ cd miscript.sh
$ gedit miscript.sh
$ ls #!/bin/bash
....
$ bash miscript.sh
echo “Hello World !!!”
....
$ ./miscript.sh Què ha passat??
....
$ ls –l miscript.sh

$ chmod u+x miscript.sh


$ ./miscript.sh
Programació Shell script (bash)

Operacions amb variables:


$ read var
$ echo $var
….
$ a=Hola
$ echo $a
…..
$ v=(un dos tres)
$ echo ${v[*]}
….
$ echo ${v[1]}
….
Programació Shell script (bash)

Operacions amb variables:


• Cometes simples (‘ ’): interpreta literalment que hi ha entre les cometes, no
es fa expansió de metacaràcters
$ a=5
$ echo ‘EL valor de a es $a’

$ echo $a
• Cometes dobles (“ ”): permet interpretar el metacaràcter $
$ echo “EL valor de a es $a”
…..

• Cometes inverses ( ` `): executa la comanda que hi ha entre cometes,


permet interpretar el metacaràcter $
$ var=`ls` $ var=miscript.sh # ha d’existir
$ echo $var $ var=`ls -l $var`
…. $ echo $var
….
Programació Shell script (bash)

Operacions aritmètiques variables:


• +, - , *, /, % :
$ a=10 $ a=5
$ echo $a $ echo $a
$ let a=a+1 $ a=$(($a+5))
$ echo $a $ echo $a
…. ….
$ b=home
Aneu en compte amb el tipus de variables:
$ echo $b
- numèriques
$ let a=b+1 - no numèriques
$ echo $a $b
….

$ b=$b:fe
Concatenar cadenes de caràcters en variables no
$ echo $b numèriques (recordar variable d’entorn PATH)
….
Programació Shell script (bash)

Operacions aritmètiques variables :


• bc (calculadora) :

$ z=3
$ z=`bc <<< $z+4`
$ echo $z
….

$ z=3
$ z=`bc <<< ”scale=2; $z/1.1234”`
$ echo $z
2.67
Programació Shell script (bash)

Control de flux: if
if [ condicio ] ;
then
if [ condicio ] ; comandes1
then else
comandes comandes2
fi fi

Operands de la condició:
#!/bin/bash
-eq : = echo Introdueix un valor:
-ne : != read var
-lt : < if [ $var –eq 1 ];
-gt : > then
-le : <= echo El valor es 1
-ge : >= fi
Programació Shell script (bash)

Control de flux: case

#!/bin/bash
case <var> in echo Introdueix un valor:
[(] <patro1> ) read var
comandes1;; case $var in
[(] <patro2> ) 1)
comandes2;; echo El valor es 1;;
… 2)
[(] <patron> ) echo El valor es 2;;
comandesn;; 3)
esac echo El valor es 3;;
*)
echo No se quin valor es
esac
Programació Shell script (bash)

Control de flux: while

#!/bin/bash
while [ condicio ]
do i=1
comandes while [ $i –le 10 ]
done do
echo El valor de i es: $i
let i=i+1
done
Programació Shell script (bash)

Control de flux: until

#!/bin/bash
until [ condicio ]
do i=1
comandes until [ $i –eq 10 ]
done do
echo El valor de i es: $i
let i=i+1
done
Programació Shell script (bash)

Control de flux: for

for variable in conjunt_de_valors


do
comandes
done

#!/bin/bash

for i in 1 2 3
do
echo $i
done
Programació Shell script (bash)

Exercici:
Editar un fitxer de text anomenat esportistes on cada
línia del fitxer té la següent estructura:

nom:cognom1:cognom2:edat:esport:club

Fer un procediment de comandes anomenat mitjana.sh que mostri


per pantalla la mitjana d’edat del fitxer esportistes
Programació Shell script (bash)

Exercici:
Amb el mateix fitxer esportistes de l'exercici
anterior on cada línia del fitxer té la següent
estructura:

nom:cognom1:cognom2:edat:esport:club

Fer un procediment de comandes anomenat menor-major.sh que


donat el fitxer esportistes, el processi línia a línia i
mostri per pantalla el missatge A o B segons l’edat de la
persona.

Missatge A:
<Nom> <Cognom> té <edat> anys i, per tant, és major d’edat

Missatge B:
<Nom> <Cognom> té <edat> anys i, per tant, és menor d’edat
www.uab.cat

Moltes gràcies,

You might also like