Sistema Operatiu Linux

Unitat: Programació del Shell

Contingut:
1- Creació de nous comandaments
2 - Paràmetres en els comandaments
3 - Utilitzar la sortida de programes com a paràmetres del nostre programa
4 - Variables de l'entorn

 
1- Creació de nous comandaments
$ who | wc -l
  $ echo 'who | wc -l' > cu
  $ bash < cu
El resultat serà el mateix que si haguéssim teclejat who | wc -l des del terminal.
$ bash cu $ chmod +x cu $ cu $ cd                                                       ens situem al nostre directori personal
$ mv cu bin                                            movem cu al nostre directori bin
$ PATH=$PATH:/home/usuari/bin      afegim el nostre bin al camí de cerca
$ echo $PATH                                       comprovem que s'ha afegit correctament
 


2 - Paràmetres en els comandaments
$ fx cu
a escriure:
$ chmod +x cu
  $ cd; cd bin                                        ens situem en el nostre directori bin personal
$ echo 'chmod +x $1' > fx                 crea el comandament fx
$ bash fx fx                                         el fa executable
$ echo echo "Hola mon" >hola         creem el comandament de proves hola
$ hola                                                  provem hola: no funciona encara
   hola: command not found
$ fx hola                                              fem que hola sigui executable
$ hola                                                  tornem a provar-lo
  chmod +x $*
  $ echo "#cl: compta el nombre de lineas en els fitxers especificats" > cl
$ echo 'wc -l $*' >>cl
$ fx cl
$ cl /home/usuari/bin/* $ ls /home/usuari/bin | cl
En aquest cas comptarà quants fitxers hi han en el directori /home/usuari/bin, doncs ls mostra els fitxers que hi han, els quals es prenen com a entrada del programa cl, el qual compta el nombre de lineas del fitxer d'entrada, és a dir, el nombre de fitxers que proporciona ls.
echo echo === fi execució de $0 === >>cl
i l'executem, veurem que surt al final del nombre de lineas del fitxer la frase:
==== fi execució de cl ====
  Pere Pages       977-33-44-00
Joan Pages       977-33-50-00
Marta Pages     977-58-00-00 $ echo 'grep $* /home/usuari/agenda' >busca
$ fx busca
$ busca Pere
Pere Pages       977-33-44-00
$ busca Pages
Pere Pages       977-33-44-00
Joan Pages       977-33-50-00
Marta Pages     977-58-00-00
$ busca 'Pere Pages'
grep: can't open Pages
  $ echo 'grep "$*" /home/usuari/agenda' >busca


PRÀCTICA: Creació de comandaments i pas de paràmetres
 



 
3 - Utilitzar la sortida de programes com a paràmetres del nostre programa
$ echo Data i hora actual `date`
Data i hora actual Sun Dec 31 12:00:00 CET 2000 $ echo "Data i hora actual `date`" $ cat llista                                    comprovem el contingut del fitxer llista
nom1
nom2
nom3
$ mail `cat llista` < carta          enviem la carta als usuaris de la llista
 
cat mostra el contingut del fitxer llista, és a dir la llista de noms, que es converteixen en paràmetres per a mail gràcies a l'ús de les cometes ``. Es com si haguéssim escrit:
$mail nom1 nom2 nom3 <carta


PRÀCTICA: La sortida de programes com a paràmetres



 

4 - Variables de l'entorn

        VARIABLE=valor $MIVAR="prova variables" $echo $MIVAR $XYZ="cat fitxer"
$ $XYZ

export
 


$sh                                            arranca un subshell
$echo $XYZ                               no mostra res
 

$exit
$echo $XYZ
  $export XYZ
$sh
$echo $XYZ env
 


set

$PS1="Linux:"

Acotació d'arguments en les variables d'entorn
  $NOMVAR=prova variables $NOMVAR="prova variables"
  $MEUNOM="El meu nom d'usuari es $LOGNAME"
$echo $MEUNOM $MEUNOM='El meu nom d'usuari és $LOGNAME'
$echo $MEUNOM



Més coses sobre variables
  $PATH=$PATH:nous camins $VAR=hola
$echo ${VAR}s $echo $VARs $echo ${BUSTIA:-valor2}
  $echo ${BUSTIA:=valor2} unset
  $unset NOMVAR $NOMVAR=
 
 

Pràctica 10: Variables del shell


Utilitzar variables dintre de fitxers script: pas per valor i per referència

$ echo ´X="Adeu"        Creem un fitxer script de dues lineas per a definir i mostrar X
> echo $X´ >setx
$ cat setx                   Comprovem el contingut
$ X=Hola                   Definim la variable X
$ bash setx                 Executem l'script
Adeu                           X conté Adeu en el subshell
$ echo $X
Hola                           X continua valent Hola en el shell original
  $ export X                    donem accés al valor d'X per a tots els subshells
$ bash                           arranquem un subshell
$ echo $X                     mostrem el valor d'X
Hola
$ X=Adeu                    modifiquem en el subshell el valor d'X
$ echo $X                    mostrem el nou valor en el subshell
Adeu
$ exit                            tornem al shell original
$ echo $X                    mostrem de nou X
Hola                            el valor torna a ser l'original, no s'ha canviat $ . setx                        Executem l'script setx en el shell actual
Adeu                           X conté Adeu durant l'execució de l'script
$ echo $X
Adeu                           X ha estat modificat per l'script
  $ echo 'echo $X' > veureX     Creem un script
$ chmod +x veureX                Donem permís d'execució a l'script
$ X=Hola  veureX                  Inicialitzem X i cridem a l'script en una mateixa línia d'ordres
Hola                                       La variable X val Hola durant l'execució sense haber-la exportat
 


PRÀCTICA: Ús de variables en fitxers script