Está en la página 1de 127

SCRIPT

LINUX
1

1. Qu es un script de Linux?
1.1. Creacin del primer script
2. Comentarios y lneas en blanco
3. Definicin de variables
4. Paso de argumentos al script
5. Estructura condicional
5.1. Estructura if
5.2. Estructura case
5.3. Condiciones
5.3.1. Cadena de texto
5.3.2. Nmeros enteros
5.3.3. Sobre ficheros
5.3.4. Negacin
5.3.5. Operadores lgicos
6. Entrada de datos por parte del usuario
7. Estructura iterativa. Bucles
7.1. Estructura for
7.2. Estructura while
8. Otros elementos importantes
9. Funciones

1. Qu es un script de Linux?

1. Qu es un script de Linux?
Es un fichero de comandos que la consola
interpreta y ejecuta (similar a los .bat)
Aumenta la comodidad en la ejecucin de procesos
Automatiza tareas complejas
Se utilizan durante el proceso de arranque/parada del
sistema
Los utilizan muchas otras herramientas

1.1. Creacin del primer script


Abrimos un fichero de texto con un editor
Escribimos los comandos en su interior
Guardamos

Cmo lo ejecutamos?
5

1.1. Creacin del primer script


bash <fichero script>
/ruta/<fichero script>
Debemos colocar en este caso como primera lnea
#!/bin/bash
Tenemos que cambiar los permisos del fichero para que
se pueda ejecutar
Tras los dos cambios anteriores podremos ejecutarlo
/ruta-absoluta/<fichero script>
./<fichero script> si est en el directorio activo
6

2. Comentarios y lneas en blanco

2. Comentarios y lneas en blanco


Un salto de lnea o lnea en blanco no
efecta ninguna operacin durante la
ejecucin del programa
Las lneas con comentarios empiezan con #.
Tampoco tendrn ningn efecto sobre la
ejecucin
Los comentarios se utilizan para aclarar lo
que realiza el cdigo
8

3. Definicin de variables

3. Definicin de variables
Una variable es un nombre simblico que
almacena un valor
La definicin de una variable se realiza
nombre_variable=valor

Para usar el valor de la variable,


anteponemos al nombre el smbolo $
Ejemplo:
STR=Hola
echo $STR
10

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

Hi

usuario@usuario-desktop:~/script

11

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

Holaor

usuario@usuario-desktop:~/script

12

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

Holaor

VAR2

7or

usuario@usuario-desktop:~/script

13

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

XDor

VAR2

7or

usuario@usuario-desktop:~/script

14

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

XDor

VAR2

5or

usuario@usuario-desktop:~/script

15

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

XDor

VAR2

5or

usuario@usuario-desktop:~/script
XD

16

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

XDor

VAR2

5or

usuario@usuario-desktop:~/script
XD
5

17

3. Definicin de variables
Veamos el uso:
VAR1=Hi
VAR1=Hola
VAR2=7
VAR1=XD
VAR2=5
echo $VAR1
echo $VAR2
VAR2=$VAR1

NomVar

Valor

VAR1

XDor

VAR2

XDor

usuario@usuario-desktop:~/script
XD
5

18

4. Paso de argumentos al script

19

4. Paso de argumentos al script


Los scripts que creamos podemos pasarle
argumentos al llamarlos
./Nombre_Script arg1 arg2 argN
Los elementos a recoger desde el script:
$0 Nombre del script
$1, $2, , $9 los nueve primeros argumentos
$# nmero de argumentos pasados al script
$@, $*todos los argumentos, empezando por $1
20

5. Estructura condicional

21

5. Estructura condicional
Nos permite indicar si ejecutamos ciertos
comandos o no segn las condiciones que
existan
Para ello necesitaremos elementos que nos
permitan hacer la evaluacin de dichas
condiciones
Existen dos estructuras condiciones para los
script, if y case
22

5.1. Estructura if
if <condicin>
then
<comandos>
fi
if <condicin>
then
<comandos>
else
<comandos>
fi

if <condicin>
then
<comandos>
elif <condicin>
then
<comandos>

else
<comandos>
fi
23

5.1. Estructura if
if [ foo = foo ]
then
echo Si es cierto
fi
echo Siempre
if [ $1 = hola ]
then
echo Si es verdad
else
echo Si es falsa
fi
echo fin

if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
then
echo Es adis
elif [ $1 = Linux ]
then
echo Es Linux
else
echo Es otra cosa
fi

24

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

FALSO
NomVar

Valor

$1

adisor

:~/script ./pruebaIf adis

25

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

adisor

CIERTO

:~/script ./pruebaIf adis

26

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

adisor

:~/script ./pruebaIf adis

27

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

adisor

:~/script ./pruebaIf adis


Es adis

28

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

adisor

:~/script ./pruebaIf adis


Es adis

29

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

adisor

:~/script ./pruebaIf adis


Es adis
fin

30

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

adisor

:~/script ./pruebaIf adis


Es adis
fin

31

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

FALSO
NomVar

Valor

$1

XDor

:~/script ./pruebaIf XD

32

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

XDor

FALSO

:~/script ./pruebaIf XD

33

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

FALSO

NomVar

Valor

$1

XDor

:~/script ./pruebaIf XD

34

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

XDor

:~/script ./pruebaIf XD

35

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

XDor

:~/script ./pruebaIf XD
Es otra cosa

36

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

XDor

:~/script ./pruebaIf XD
Es otra cosa

37

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

XDor

:~/script ./pruebaIf XD
Es otra cosa
fin

38

5.1. Estructura if
if [ $1 = hola ]
then
echo Es hola
elif [ $1 = adis ]
echo Es adis
elif [ $1 = Linux ]
echo Es Linux
else
echo Es otra cosa
fi
echo fin

NomVar

Valor

$1

XDor

:~/script ./pruebaIf XD
Es otra cosa
fin

39

5.2. Estructura case


case <variable>
in
expresin 1)
<bloque 1>
;;
expresin 2)
<bloque 2>
;;
expresin 3)
<bloque 3>
;;
*)
<bloque por defecto>
;;
esac

40

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

adisor

:~/script ./pruebaCase adis

41

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

adisor

:~/script ./pruebaCase adis

42

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
COINCIDE
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

adisor

:~/script ./pruebaCase adis

43

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

adisor

:~/script ./pruebaCase adis


Es ADIOS

44

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

adisor

:~/script ./pruebaCase adis


Es ADIOS

45

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

XDor

:~/script ./pruebaCase XD

46

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

XDor

:~/script ./pruebaCase XD

47

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

XDor

:~/script ./pruebaCase XD

48

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

XDor

:~/script ./pruebaCase XD

49

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

XDor

:~/script ./pruebaCase XD

50

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

XDor

:~/script ./pruebaCase XD
Es OTRA COSA

51

5.2. Estructura case


case $1
in
hola)
echo Es HOLA
;;
adis)
echo Es ADIOS
;;
Linux)
echo Es Linux
;;
*)
echo Es OTRA COSA
;;
esac

NomVar

Valor

$1

XDor

:~/script ./pruebaCase XD
Es OTRA COSA

52

5.3. Condiciones
Se utilizan para los apartados que se indicaban
como <condicin> dentro de las sentencias
condicionales
Veremos que son igualmente vlidas para algunas
iterativas
Existen de varios tipos, segn la condicin que
queramos comprobar
53

5.3.1. Cadena de texto


[ $a = $b ] Igualdad
[ $a == $b ] Igualdad
[ $a != $b ] Desigualdad
[ $a \< $b ] Orden alfabtico
[ $a \> $b ] Orden alfabtico inverso
[ -z $a ] Si la variable es vaca, es verdad
[ -n $a ] Si contiene algo, es verdad

54

5.3.2. Nmeros enteros

[ $a -eq $b ] Igualdad
[ $a -ne $b ] Desigualdad
[ $a -gt $b ] Mayor que
[ $a -lt $b ] Menor que
[ $a -ge $b ] Mayor o igual que
[ $a -le $b ] Menor o igual que

55

5.3.3. Condiciones sobre ficheros


[ -e nombre fichero ] existencia
[ -f nombre fichero ] es fichero ordinario
[ -s nombre fichero ] es fichero vaco (0 bytes)
[ -d nombre fichero ] es directorio
[ -b nombre fichero ] es dispositivo de bloques
[ -c nombre fichero ] es dispositivo de caracteres
[ -L nombre fichero ] es enlace simblico
[ -r nombre fichero ] tiene permiso de lectura
[ -x nombre fichero ] tiene permiso de ejecucin
[ -w nombre fichero ] tiene permiso de escritura
56

5.3.3. Condiciones sobre ficheros


[ -O nombre fichero ] somos propietarios del fichero
(UID)
[ -G nombre fichero ] somos propietarios del fichero
(GID)
[ -N nombre fichero ] El fichero se modific desde
la ltima vez que fue ledo
[ -h nombre fichero ] es enlace duro

57

5.3.4. Negacin

Se usa el carcter !
[ ! e fichero ]
[ ! f fichero ]

58

5.3.5. Operadores lgicos


Nos permite concatenar expresiones
condicionales. Para ello se debe recordar los
operadores AND y OR, tomando CIERTO como 1
y FALSO como 0
[ expr1 -a expr2 ] AND entre expr1 y expr2
[ expr1 -o expr2 ] OR entre expr1 y expr2
[ expr1 ] || [ expr2 ]

0 AND 0 = 0

0 OR 0 = 0

0 AND 1 = 0

0 OR 1 = 1

1 AND 0 = 0

1 OR 0 = 1

1 AND 1 = 1

1 OR 1 = 1
59

6. Entrada de datos por parte del usuario

60

6. Entrada de datos por parte del usuario


La entrada de datos por parte del usuario no
necesariamente tiene que hacerse mediante los
argumentos
Mediante read podemos solicitar que se introduzca
algn parmetro que queramos utilizar durante la
ejecucin
Al encontrarse con dicha instruccin, la ejecucin
se detendr a la espera del dato
read nombre_variable
61

6. Entrada de datos por parte del usuario


echo Introduzca un dato

NomVar

Valor

read DATO
echo $DATO
:~/script ./pruebaDatos

62

6. Entrada de datos por parte del usuario


echo Introduzca un dato

NomVar

Valor

read DATO
echo $DATO
:~/script ./pruebaDatos
Introduzca un dato

63

6. Entrada de datos por parte del usuario


echo Introduzca un dato

NomVar

Valor

read DATO
echo $DATO
:~/script ./pruebaDatos
Introduzca un dato

64

6. Entrada de datos por parte del usuario


echo Introduzca un dato
read DATO

NomVar

Valor

DATO

XXDor

echo $DATO
:~/script ./pruebaDatos
Introduzca un dato
XXD

65

6. Entrada de datos por parte del usuario


echo Introduzca un dato
read DATO

NomVar

Valor

DATO

XXDor

echo $DATO
:~/script ./pruebaDatos
Introduzca un dato
XXD
XXD

66

6. Entrada de datos por parte del usuario


echo Introduzca un dato
read DATO

NomVar

Valor

DATO

XXDor

echo $DATO
:~/script ./pruebaDatos
Introduzca un dato
XXD
XXD
:~/script

67

7. Estructura iterativa. Bucles

68

7. Estructura iterativa. Bucles


Se utilizan cuando queremos repetir una accin un
nmero de veces, que puede ser fijo o
dependiente de alguna variable
Veremos los bucles while y for, para bsquedas y
recorridos respectivamente
Existen otros tipos de bucles para los script de
Linux, como until, pero no los estudiaremos

69

7.1. Estructura for


for <variable> in <recorrido>
do
<comandos>
done

70

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1

71

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich1or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1

72

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich1or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1
Fichero: fich1

73

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich2or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1
Fichero: fich1

74

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich2or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1
Fichero: fich1
Fichero: fich2

75

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich3or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1
Fichero: fich1
Fichero: fich2

76

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich3or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1
Fichero: fich1
Fichero: fich2
Fichero: fich3

77

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich3or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1
Fichero: fich1
Fichero: fich2
Fichero: fich3

78

7.1. Estructura for


for i in $(ls)
do

NomVar

Valor

fich3or

echo Fichero: $i
done
echo Fin

:~/script ls
fich1 fich2 fich3
:~/script ./for1
Fichero: fich1
Fichero: fich2
Fichero: fich3
Fin
79

7.1. Estructura for


Veamos otro ejemplo con el bucle for
En este caso vamos a utilizar el elemento seq,
cuya sintaxis es:
seq <valor inicial> <valor final>
El valor de la variable se ir incrementando de uno
en uno. Mejor el ejemplo para entenderlo mejor

80

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

echo Valor: $i
done

:~/script ./for2

echo Fin

81

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

1or

echo Valor: $i
done

:~/script ./for2

echo Fin

82

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

1or

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1

83

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

2or

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1

84

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

2or

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2

85

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

3or

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2

86

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

3or

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2
Valor: 3

87

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

4r

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2
Valor: 3

88

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

4r

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2
Valor: 3
Valor: 4

89

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

5r

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2
Valor: 3
Valor: 4

90

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

5r

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2
Valor: 3
Valor: 4
Valor: 5

91

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

5r

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2
Valor: 3
Valor: 4
Valor: 5

92

7.1. Estructura for


for i in $(seq 1 5)
do

NomVar

Valor

5r

echo Valor: $i
done
echo Fin

:~/script ./for2
Valor: 1
Valor: 2
Valor: 3
Valor: 4
Valor: 5
Fin
93

7.2. Estructura while

while <condicin>
do
<comandos>
done

94

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

:~/script ./pruwhile

done
echo Fin
95

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

0or

:~/script ./pruwhile

done
echo Fin
96

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

0or

Se cumple

:~/script ./pruwhile

done
echo Fin
97

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

0or

:~/script ./pruwhile
Valor: 0

done
echo Fin
98

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

1or

:~/script ./pruwhile
Valor: 0

done
echo Fin
99

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

1or

Se cumple

:~/script ./pruwhile
Valor: 0

done
echo Fin
100

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

1or

:~/script ./pruwhile
Valor: 0
Valor: 1

done
echo Fin
101

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1

NomVar

Valor

2or

:~/script ./pruwhile
Valor: 0
Valor: 1

done
echo Fin
102

7.2. Estructura while

tras 7 iteraciones

103

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1
done

NomVar

Valor

9or

:~/script ./pruwhile
Valor: 0
Valor: 1

Valor: 9

echo Fin
104

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1
done

NomVar

Valor

10or

:~/script ./pruwhile
Valor: 0
Valor: 1

Valor: 9

echo Fin
105

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1
done

NomVar

Valor

10or

No se cumple

:~/script ./pruwhile
Valor: 0
Valor: 1

Valor: 9

echo Fin
106

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1
done
echo Fin

NomVar

Valor

10or

:~/script ./pruwhile
Valor: 0
Valor: 1

Valor: 9
Fin

107

7.2. Estructura while


a=0
while [ $a lt 10 ]
do
echo Valor: $a
let a=a+1
done
echo Fin

NomVar

Valor

10or

:~/script ./pruwhile
Valor: 0
Valor: 1

Valor: 9
Fin

108

8. Otros elementos importantes

109

8. Otros elementos importantes


Usar el resultado de un comando como valor de
otro comando:
a=$(pwd) #En a almacena el valor de pwd
ls $a #Muestra el listado de a

Para salir de un script


Exit

Asignacin de un nuevo valor a una variable


let <variable>=<expresin>
Ejemplo:
let a=1+3
let a=$a+1
110

8. Otros elementos importantes


Operaciones aritmticas:

Suma (+) 2+3


Resta (-) 2-3
Multiplicacin (*) 3*5
Divisin entera (/) 3/2
Resto de divisin entera (%) 3%2
Exponenciacin (**) 3**2

* Ver man bc para operaciones ms complejas

111

9. Funciones

112

9. Funciones
Es un elemento que no es totalmente
imprescindible para escribir un script, pero facilita
mucho la labor
Permite dividir en mdulos la tarea a ejecutar
La funcin se caracteriza por su nombre
Puede tener argumentos de entrada cuyo valor se
determina en la llamada a la funcin
Veamos la estructura y ejemplos de uso de una
funcin
113

9. Funciones
#Declaramos la funcin, indicando que hace
function <nombre>
{
<comandos>
}
#El lugar desde el que se invoca a la funcin
<nombre> arg1 arg2 argN
* Nota: Los argumentos simplemente se colocan separados por un espacio, utilizndolos
en la funcin con $1, $2, etc
114

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}

NomVar

Valor

:~/script ./prufun1

#Invocacin
hola
salir
115

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}

NomVar

Valor

:~/script ./prufun1

#Invocacin
hola
salir
116

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}

NomVar

Valor

:~/script ./prufun1

#Invocacin
hola
salir
117

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}

NomVar

Valor

:~/script ./prufun1
Hola

#Invocacin
hola
salir
118

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}

NomVar

Valor

:~/script ./prufun1
Hola

#Invocacin
hola
salir
119

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}

NomVar

Valor

:~/script ./prufun1
Hola

#Invocacin
hola
salir
120

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}

NomVar

Valor

:~/script ./prufun1
Hola
Salir

#Invocacin
hola
salir
121

9. Funciones
function hola {
echo Hola
}
function salir {
echo Salir
}
#Invocacin
hola
salir

NomVar

Valor

:~/script ./prufun1
Hola
Salir
:~/script

122

9. Funciones
function imprimir {
echo $1
}
imprimir Hola

NomVar

Valor

:~/script ./prufun2

123

9. Funciones
function imprimir {
echo $1
}
imprimir Hola

NomVar

Valor

:~/script ./prufun2

124

9. Funciones
function imprimir {
echo $1
}
imprimir Hola

NomVar

Valor

$1

Holaor

:~/script ./prufun2

125

9. Funciones
function imprimir {
echo $1
}
imprimir Hola

NomVar

Valor

$1

Holaor

:~/script ./prufun2
Hola

126

9. Funciones
function imprimir {
echo $1
}
imprimir Hola

NomVar

Valor

$1

Holaor

:~/script ./prufun2
Hola
:~/script

127

También podría gustarte