You are on page 1of 26

SMX-M2-UF3-NF3-AF5-PRE

Scripts

Joan Botella Vinaches


Institut Nicolau Copèrnic
Conceptes
Conceptes

El codi font són les instruccions d'un programa, escrites en un


llenguatge de programació comprensible pels humans. El formen un
o més arxius en text pla.
Un compilador és un programa que llegeix arxius de codi font i els
converteix en un arxiu binari executable, format per instruccions en
codi màquina comprensibles per un sistema operatiu i una família
de processadors.
Un intèrpret és un programa que llegeix arxius de codi font i
executa les seues instruccions sense haver de compilar-les.
Un script és un programa escrit en un llenguatge que pot ser
interpretat.
Scripts en Bash
Scripts en Bash

Com Executar un Script en Bash


1. Passar-li l'arxiu a executar al programa bash :

bash el-meu-script.sh

2. Donant-li permisos d'execució a l'arxiu i executant-lo directament:

sudo chmod u+x el-meu-script.sh


./el-meu-script.sh

Si utilitzem la segona opció, hi ha que indicar-li a Bash quin intèrpret ha de


processar l'arxiu amb un shebang (explicat més avant). Si no en posem cap
utilitzarà el programa bash .
Scripts en Bash

Comentaris
Una línia que comence per # serà ignorada per Bash. S'utilitzen
per escriure comentaris dirigits a humans que estiguen analitzant
el codi.

# Aquesta línia no té cap efecte


Scripts en Bash

Shebang
És un comentari a la primera línia del script que indica el path al
programa que ha d'interpretar-lo. Comença amb els símbols #! .
Shebang d'un script en Bash:

#! /bin/bash
echo hola

Shebang d'un script en Python3

#! /usr/bin/python3
print('hola')
Scripts en Bash - Shebang

Al posar un Shebang, el desenvolupador del script especifica quin


intèrpret, i fins i tot quina versió del mateix, és el correcte per
poder interpretar el seu codi.
Si no posem Shebang, li passem la responsabilitat de saber quin és
l'interpret correcte a l'usuari. Això no és una bona pràctica.
Scripts en Bash

Echo
El programa echo mostra un text per la línia de comandes.

#! /bin/bash
echo hola

./el-meu-script.sh
hola
Scripts en Bash

Variables
Una variable és un espai en memòria on podem guardar valors
temporalment.
Per exemple, podem preguntar-li a l'usuari quin és el seu nom i
guardar-lo a una variable, per cridar-lo pel seu nom durant la
resta de missatges que mostre el script.
Amb les variables podem fer diferents operacions i comparacions,
segons el tipus de dada que continguen.
Scripts en Bash

Després d'inicialitzar-les, les variables s'utilitzen posant-los un


símbol $ davant.

#! /bin/bash
NOM=Joan
echo Hola $NOM

./el-meu-script.sh
Hola Joan
Scripts en Bash

Variables d'Entorn
Són aquelles variables que venen preinicialitzades a la shell actual.
Podem llistar-les amb la comanda env.
Per poder utilitzar variables de la shell actual a una shell filla, cal
exportar-la amb export
Scripts en Bash - Variables d'Entorn

Per exemple, si el-meu-script.sh conté:

#! /bin/bash
echo $NOM

La següent comanda no mostrarà rés:

./el-meu-script.sh

Mentre que el següent mostrarà "Joan":

NOM=Joan
export NOM
./el-meu-script.sh
Scripts en Bash

Paràmetres
Els paràmetres que li passem al script quan l'executem podem
obtenir-los de les variables $0 a $9 . El $0 correspon al nom del
script.

#! /bin/bash
echo $0
echo $1
echo $2

./el-meu-script.sh hola mon


el-meu-script.sh
hola
mon
Scripts en Bash

Read
El programa read mostra un text per la línia de comandes i queda a
l'espera del input que vulga fer l'usuari. En prèmer intro, allò
introduït es ficarà a una variable.

#! /bin/bash
read -p 'Escriu el teu nom: ' NOM
# p = prompt

echo Hola $NOM

./el-meu-script.sh hola mon


Escriu el teu nom: Joan
Hola Joan
Scripts en Bash

Cometes
Les cometes simples (') defineixen cadenes de text sobre les que no
s'ha de fer cap procés.

echo 'Hola Món'

Les cometes dobles (") defineixen cadenes de text dins les quals
s'ha de processar variables o cometes obertes.

NOM=Joan
echo "Hola $NOM"
Scripts en Bash - Cometes

Les cometes obertes (`) defineixen una comanda que s'ha


d'executar i retornar el que es mostraria per pantalla.

echo "Ara mateix són les `date +%R` hores"

UID=`id -u`
echo "El teu UID és $UID"
Scripts en Bash

Codi de Sortida
Tots els programes, quan acaben la seua execució, emeten un codi
de sortida.
Aquest codi és un número major o igual a 0.
Si és 0, el programa ha finalitzat amb èxit.
Si és un número superior a 0, el programa ha acabat amb un
error. Aquest codi pot utilitzar-se per buscar al manual del
programa els detalls de l'error.
Scripts en Bash - Codi de Sortida

El codi de sortida de l'última comanda s'emmagatzema a la variable


$? :

ls /fake-dir
echo $?
# mostra 2
Scripts en Bash

If
La sentència if permet executar un bloc de codi solament si es
compleix una condició.

if [ "$NOM" == 'Joan' ]
then
echo "Hola $NOM"
fi
Scripts en Bash

Podem afegir una clàusula else per executar un altre bloc de codi
si no es compleix la condició.

if [ "$NOM" == 'Joan' ]
then
echo "Hola $NOM"
else
echo 'Qui eres tu?'
fi
Scripts en Bash

While
La sentència while permet repetir l'execució d'un bloc de codi
mentre la condició siga certa.

while [ "$NOM" != 'Joan' ]


do
read -p 'Escriu el teu nom: ' NOM
done
Scripts en Bash

Comparacions
Operadors generals:

! comparació
True si la comparació torna false, false si la comparació torna true.
Scripts en Bash - Comparacions

Operadors sobre cadenes de text:

string1 == string2
True si string1 i string2 són iguals.
string1 != string2
True si string1 i string2 són diferents.
string1 < string2
True si string1 va abans de string2 al ordenar-los lexicogràficament.
string1 > string2
True si string1 va després de string2 al ordenar-los lexicogràficament.
Scripts en Bash - Comparacions

Operadors sobre números enters:

int1 -eq int2


True si int1 i int2 són iguals.
int1 -lt int2
True si int1 és menor que int2.
int1 -le int2
True si int1 és menor o igual que int2.
int1 -gt int2
True si int1 és major que int2.
int1 -ge int2
True si int1 és major o igual que int2.
Scripts en Bash - Comparacions

Operadors sobre arxius i directoris:

-f path
True si path és un arxiu
-d path
True si path és un directori
-h path
True si path és un enllaç simbòlic
-r path
True si path és legible
-w path
True si path és escribible
-x path
True si path és executable

You might also like