Programacion en shell

Solo disponible en BuenasTareas
  • Páginas : 24 (5873 palabras )
  • Descarga(s) : 0
  • Publicado : 24 de febrero de 2011
Leer documento completo
Vista previa del texto
1 Programación scripts shell. 2
1.1 Nuestro primer script. 2
1.2 Uso de variables en los scripts. Expansiones. 3
1.3 Funciones. 4
1.4 Estructuras condicionales 5
if 5
COMANDO test 8
case 12
1.5 Estructuras iterativas o Bucles. 13
for 13
while y until 14
select 16
1.6 Paso de parámetros. 18
1.7 Valores devueltos por las órdenes. 19
1.8 Algunos scripts completos de ejemplo 20
1.9Montar unidades de disco 21








1 Programación scripts shell.
1.1 Nuestro primer script.
Los scripts no son más que ficheros de texto ASCII puro, que pueden ser creados con cualquier editor del que dispongamos (vi, nano, gedit, emacs, etc.). Cread un fichero de texto con nombre primero.sh, con el siguiente contenido:
#!/bin/bash
echo “Hola Mundo”
La primera línea sirve paraindicar que shell utilizamos (en nuestro caso bash) y donde puede ser encontrado en nuestro sistema (para saberlo, podemos hacer locate bash). La segunda línea de nuestro script, simplemente utiliza el comando para escribir en pantalla (echo) y escribe la línea Hola Mundo.
Una vez creado el fichero, debemos darle permisos de ejecución, mediante el comando chmod a+x primero.sh, posteriormente paraejecutarlo debemos llamarlo como ./permiso.sh (el punto barra es para indicarle que lo busque en el directorio actual, ya que dicho directorio no estará seguramente incluido en el PATH del sistema).
Si queremos ejecutar un script para comprobar como funciona sin hacerlo ejecutable, podemos hacerlo mediante el comando source primero.sh que permite lanzar un script no ejecutable. La orden sourcetambién puede ejecutarse simplemente escribiendo un punto ( . primero.sh ).
Sin embargo, la orden source solo debe usarse para comprobar el script, una vez que tengamos el script completo y depurado debemos darle sus permisos de ejecución correspondientes.
Las comillas dobles que hemos usado para escribir Hola Mundo no son necesarias, y podeis comprobar como quitandolas el proceso se ejecutaexactamente igual. Sin embargo, es una buena práctica encerrar siempre los textos entre comillas dobles, y en caso de que contengan caracteres especiales (como el *, el $, etc.), es mejor usar comillas simples, que son más potentes que las comillas dobles. Probad lo siguiente:
echo esto es un asterisco * sin comillas
echo esto es un dólar y tres letras $ABC sin comillas
echo “esto es un asterisco* entre comillas dobles”
echo ‘esto es un asterisco * entre comillas simples’
echo “esto es un dólar y tres letras $ABC entre comillas dobles”
echo ‘esto es un dólar y tres letras $ABC entre comillas simples’
Si tenemos que ejecutar varias líneas y queremos escribirlas en una sola, podemos hacerlo usando el símbolo punto y coma para indicar que lo siguiente es otra línea, aunque este en lamisma:
echo Hola ; pwd ; echo Adios # esto son tres líneas escrita en una sola.
También podemos hacer lo contrario, escribir una sola línea en varias. Para ello usamos el carácter contrabarra cuando queramos que nuestra línea se “rompa” y continué en la línea de abajo.

echo “Esto es un ejemplo \
de una línea escrita realmen\
te en tres” # esto es una línea escrita en tres.
En este ultimoejemplo he aprovechado para mostraros como se pueden usar comentarios en los scripts. Basta con usar el símbolo almohadilla (#) donde queramos, todo lo que quede a la derecha de dicho símbolo es un comentario. Si usamos # como primer carácter de una línea, toda la línea es de comentario.
1.2 Uso de variables en los scripts. Expansiones.
Las variables de los shell scripts son muy simples, ya que notienen tipo definido ni necesitan ser declaradas antes de poder ser usadas. Para introducir valor en una variable simplemente se usa su nombre, y para obtener el valor de una variable se le antepone un símbolo dólar.
#!/bin/bash
DECIR=”Hola Mundo”
echo $DECIR
Este script realiza exactamente la misma función que el anterior, pero usando una variable.
Cualquier valor introducido en una...
tracking img