Diferència entre revisions de la pàgina «Bash script»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 66: Línia 66:
 
Si ara filtrem la llista de variables d'entorn, veurem que sí que hi és:
 
Si ara filtrem la llista de variables d'entorn, veurem que sí que hi és:
 
  $ env | grep aaa
 
  $ env | grep aaa
 +
 +
<br>
 +
 +
== Expressions aritmètiques ==
 +
Per efectuar càlculs matemàtics ens caldrà utilitzar la següent sintaxi:
 +
$((expressió))
 +
Per exemple:
 +
$ echo $((11+5))
 +
16
 +
 +
OJU: en principi '''només ens permet aritmètica sencera (integers)'''. No podem utilitzar nombres en coma flotant (floats). Si volem efectuar operacions matemàtiques en coma flotant haurem d'utilitzar l'aplicació '''''bc''''' (Basic Calculator). [http://phoxis.org/2009/12/23/floatmathbash/ Feu-li un cop d'ull aquí a la utilització de ''bc''].
 +
 +
Si algun dels elements no és un element interpretable es prendrà com un zero '0' (per exemple, variables no definides o strings no transformables a integer).
  
 
<br>
 
<br>

Revisió del 15:42, 15 feb 2016

Intro

Els diversos Unix's han tingut sempre una potent interfície de comandes. La shell és la interfície que ens permet "dialogar" amb el nucli del sistema operatiu passant-li comandes.

Hi ha diversos llenguatges de shell script, entre ells el CSH (C-shell), i el KSH (Korn-shell), però sembla que el què s'ha imposat definitivament és el BASH o Bourne-Again SHell.

És important dominar algun dels editors de text per consola. El més típic ara és el nano, tot i que convé també conèixer vi ja que sol tenir syntax highlight (vim o vi improved) i perquè per raons històriques sempre està present i ens pot treure d'un apuro.

Referències:


Arxius i permisos

Els scripts son arxius de text amb instruccions llegibles per la nostra shell. Es comenten amb un # tot i que la 1a línia és una excepció (comença per #!) i indica quin serà l'intèrpret que l'executarà. Edita hola.sh des del teu editor de text favorit:

#!/bin/bash
# això és un comentari
echo "hola!"  # això ja és una instrucció

...i abans de començar a executar-lo cal donar permisos d'execució a l'arxiu:

$ chmod +x hola.sh

...i ara sí que ja el podem executar:

$ ./hola.sh


Entorn

Les comandes de la shell s'executen sense incloure tota la ruta mercès a la variable d'entorn $PATH

$ echo $PATH

...i podrem veure els directoris (separats per :) en els que la shell buscarà una comanda quan la teclegem. Les que (quasi) segur que hi han de ser son:

/bin:/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

En aquestes carpetes hi ha les comandes més habituals que utilitzem com ls a /bin o ifconfig a /sbin (a sbin hi ha les de Superusuari, d'aquí la 's' al davant).

Si algun dia volem saber on hi ha una comanda que estem utilitzant, podem esbrinar-ho amb:

$ which ls

...i ens dirà on està el binari que s'executarà amb aquesta comanda (que es buscarà als diferents directoris $PATH, en l'ordre que estan situats).


Directori ~/bin

Un truc força útil és crear la carpeta bin al nostre home directory. Aquesta es posarà automàticament al $PATH (fes logout i login després de crear la carpeta). Aquest és el lloc on posar scripts nostres i que no calgui que estiguin disponibles per altres usuaris.

$ mkdir ~/bin

...fes logout i login i comprova el $PATH


Variables

Les variables porten un $ al davant (similar a Perl i PHP), com p.ex. $PATH. En qualsevol moment i des de la pròpia shell (sense crear un script) podem crear-ne:

$ aaa=22
$ sss='els strings millor entre cometes per evitar errors amb els espais'
$ echo $aaa
22

OJU!: és important que el signe "=" estigui enganxat, és a dir sense espais, al nom de la variable i al valor.

Recordem que podem veure totes les variables d'entorn amb:

$ env

Busca la nostra variable 'aaa' a la llista, veuràs que no hi és. Si ho vols fer com els pros, filtra la sortida amb grep:

$ env | grep aaa

Si volem que les nostres variables estiguin disponibles per altres programes, aplicacions, scripts, etc. caldrà exportar-les:

$ export aaa=22

Si ara filtrem la llista de variables d'entorn, veurem que sí que hi és:

$ env | grep aaa


Expressions aritmètiques

Per efectuar càlculs matemàtics ens caldrà utilitzar la següent sintaxi:

$((expressió))

Per exemple:

$ echo $((11+5))
16

OJU: en principi només ens permet aritmètica sencera (integers). No podem utilitzar nombres en coma flotant (floats). Si volem efectuar operacions matemàtiques en coma flotant haurem d'utilitzar l'aplicació bc (Basic Calculator). Feu-li un cop d'ull aquí a la utilització de bc.

Si algun dels elements no és un element interpretable es prendrà com un zero '0' (per exemple, variables no definides o strings no transformables a integer).


Arguments

Dintre d'un script podem accedir als arguments que ens passi l'usuari amb les variables $1, $2, etc.

Per exemple, podem crear un script args.sh com aquest:

echo El primer argument és $1
echo El segon és $2
echo el nom del script és $0

I l'executem amb:

$ ./args.sh hola que tal


Bucles, llistes i altres gaites

...


Condicionals

...

if...then

...

switch...case

...


Exercicis

...