Scripts

Introducció

Un guió o script és un arxiu de text executable que conté una sèrie de comandes. Quan s'executa l'script, s'executen les comandes que conté.

Es pot crear i editar un script amb qualsevol editor de text pla (nano, gedit...).

Creació de l'script

El més habitual és posar l'extensió .sh als scripts de Linux:

nano crea_directoris.sh

En la primera línia cal indicar amb quin intèrpret de comandes s'han d'executar les comandes que conté (#!/bin/bash).

A continuació es posen les comandes en el mateix ordre en què s'han d'executar:

#!/bin/bash
#Comentari explicatiu de què fa l'script
mkdir /home/usuari/SOX
mkdir /home/usuari/SOX/UF1
mkdir /home/usuari/SOX/UF1/Apunts
mkdir /home/usuari/SOX/UF1/Practiques

Tota línia que comenci amb coixinet # es tracta d'un comentari i no serà llegida pel intèrpret de comandes (excepte la primera línia que estableix el shell pel que ha sigut dissenyat el script).

Assignació de permisos

Un cop creat el script cal modificar els permisos de l'arxiu per permetre que s'executi:

Li podem donar permisos d'execució amb la comanda:

Un cop assignats els permisos, si fem la comanda ls veurem com el color del fitxer ha canviat indicant que és un fitxer executable i per tant es pot executar.

Execució de l'script

Linux busca els programes executables en els directoris que estan definits a la variable de sistema $PATH.

Si el nostre script es troba en una d'aquestes ubicacions podrem executar-lo posant únicament el nom del script.

Si no es troba en aquestes ubicacions haurem d'indicar la ruta sencera on es troba el fitxer executable o bé si està al mateix directori cal posar ./:

També es pot executar amb la comanda bash. En aquest cas no caldria canviar els permisos ni posar ./ al davant si estem en el mateix directori:

Per comprovar que l'script funció correctament, es pot executar l'script pas a pas amb el paràmetre -x.

Variables

Com en qualsevol llenguatge de programació, les variables s'utilitzen per poder guardar informació i a partir d'aquesta poder prendre decisions o realitzar operacions.

És important posar un nom a la variables que descrigui el seu ús. El seu nom no pot ser cap de les paraules reservades (exemple: echo).

Hi ha dues formes diferents d'utilitzar-la depenent de si volem assignar-li un valor o utilitzar-la (realitzar una operació). A continuació veurem un exemple en el qual se li assigna a la variable nombre un valor i després es mostra per pantalla.

Com es pot veure en l'exemple quan es vol accedir a la valor de la variable s'utilitza el símbol $.

Paràmetres

Sovint cal que els nostres scripts rebin paràmetres des de la línia d'ordres per fer-los més versàtils. Aquest és el cas de la comanda ls en que li podem passar el paràmetre -l per modificar la sortida de dades ls -l

Els paràmetres es poden usar dins de l'script com qualsevol altra variable de Shell. Els paràmetres dins el shell script són accessibles utilitzant les variables: $0 és el nom de el programa, $1 és el primer paràmetre, $2, és el segon paràmetre, etc. A més, s'utilitza la variable $# que estableix el nombre de paràmetres que ha rebut el shell. A continuació veurem un exemple:

Si l'executem:

Obtenim la sortida:

El nom del programa és param_expl.sh El primer paràmetre rebut és 3 El segon paràmetre rebut és 5 ... En total s'han rebut 2 paràmetres

Paràmetre

Descripció

Valor rebut

$0

Nom del programa

param_expl.sh

$1

Primer paràmetre

3

$2

Segon paràmetre

5

$#

Números de paràmetres

2

$@

Valors dels paràmetres passats (valors separats: "1" "2" ...)

3 5

$*

Valors dels paràmetres passats (valors en bloc: "1 2"...)

3 5

Entrada i sortida de dades

E/S per consola

Redirecció de l'E/S

Comentes

En els scripts s’utilitzen tres tipus de cometes:

Teclat

Significat

Acció

Cometes simples (' ')

Estan a sota l'interrogant ?

Literal

S'interpreta de forma literal, sense substituir camp variable.

Cometes dobles (" ")

Shift + Tecla 2

Substitució de variables

Es substitueixen les variables.

Cometes invertides (` `)

Tecla accent obert + Espai

Execució de comanda o expressió

S'executen les línies de comandes o expressions.

Exemples:

Comanda

Resultat

Cometes simples (' ')

echo 'Hola $NOM'

Hola $NOM

Cometes dobles (" ")

echo "Hola $NOM"

Hola Jordi

Cometes invertides (` `)

echo 'Avui és el dia' `date +%D`

Avui és el dia 25/04/2020

Exemple:

  • La primera línia echo 'Hola $NOM' amb cometes simples no s'ha substituït el valor de la variable.

  • La segona línia echo "Hola $NOM" amb cometes dobles s'ha substituït la variable NOM per Jordi.

  • La tercera línia echo `Hola $NOM` amb cometes invertides dona un error al executar-se perquè s'intenta executar una comanda però Hola no és una comanda.

Comandes interessants

Estructures de control

Condicions

Exemples d'scripts

Trobar els 10 directoris més grans donat un path

Última actualización