Globedia.com

×
×

Error de autenticación

Ha habido un problema a la hora de conectarse a la red social. Por favor intentalo de nuevo

Si el problema persiste, nos lo puedes decir AQUÍ

×
cross

Suscribete para recibir las noticias más relevantes

×
Recibir alertas

¿Quieres recibir una notificación por email cada vez que Claudio Concepción Certad escriba una noticia?

Usando parametros posicionales en scripts Bash

17/10/2011 00:50 0 Comentarios Lectura: ( palabras)

Cuando ejecutamos un shell script puede ser útil pasarle argumentos o parámetros a dicho script (por ejemplo, el nombre del fichero sobre el cual queremos que el script trabaje o procese. Estos parámetros son referidos al script de acuerdo a la posición que toman en la línea de comandos: $0 es el nombre del comando o script en sí mismo, $1 es el primer parámetro, $2 es el segundo, y así sucesivamente. No podemos cambiar los valores de esas variables porque son un caso especial (normalmente las variables no pueden comenzar con un dígito, por lo que el shell no interpreta "1=hola" como una asignación de variable).

Un script no puede saber cuántos parámetros posicionales utilizará, por lo que si no controlamos la entrada adecuada de los mismos es problable que el script no trabaje como esperamos. Como ejemplo vamos a crear un script que llamaremos parametros.sh, el cual contendrá lo siguiente:

#!/bin/bash echo "Hola, mi nombre es `basename $0`" echo "Tengo dos parámetros posicionales, que son:" echo "Primero: $1" echo "Y el segundo es: $2"

Si ejecutamos este script sin los parámetros posicionales, todo saldrá en blanco:

fraterneo@rainbow:~$ ./parametros.sh Hola, mi nombre es parametros.sh Tengo dos parámetros posicionales, que son: Primero: Y el segundo es:

Pero cuando lo hacemos con los parámetros requeridos, las cosas funcionan correctamente:

fraterneo@rainbow:~$ ./parametros.sh 34 56 Hola, mi nombre es parametros.sh Tengo dos parámetros posicionales, que son: Primero: 34 Y el segundo es: 56

Lo excelente de los parámetros posicionales es que podemos asignarlos a variables, y con el control adecuado para que el script fucione como se espera.

El siguiente es un script (fileownercounter.sh) que nos permite averiguar cuántos ficheros o carpetas le pertenecen a un usuario dentro de una carpeta en particular.

#!/bin/bash #Autor: Claudio Concepcion #Fecha: 16.10.2011 #Propósito: Ver la cantidad de ficheros o carpetas que le pertenecen a un usuario dentro de una carpeta particular utilizando parámetros posicionales.

BADPARAM=165 FILECOUNT=0

if [ $# != 2 ] then echo Necesitas especificar el usuario y la carpeta, separados por un espacio, para hacer el trabajo. Exit $BADPARAM fi

USERNAME=$1 WORKDIR=$2 FILECOUNT=`ls -l $WORKDIR | awk '/'$USERNAME'/' | wc -l`

echo El usuario $USERNAME tiene $FILECOUNT ficheros o carpetas en el directorio $WORKDIR.

Como podemos observar, si ejecutan el script, he asignado el parámetro $1 para el nombre de usuario y el parámetro $2 para la carpeta en donde se hará el conteo. Si lo ejecuto para mi usuario en mi directorio home (~/), y luego en el mismo usuario para el directorio /etc, sería lo siguiente:

fraterneo@rainbow:~$ ./fileownercounter.sh fraterneo ~/ El usuario fraterneo tiene 20 ficheros o carpetas en el directorio /home/fraterneo/.

Fraterneo@rainbow:~$ ./fileownercounter.sh fraterneo /etc El usuario fraterneo tiene 0 ficheros o carpetas en el directorio /etc/.

Finalmente, si intentamos ejecutarlo sin especificar los dos parámetros posicionales que requiere, la estrucutra de control if nos advertirá de ello y terminará el script.

Fraterneo@rainbow:~$ ./fileownercounter.sh Necesitas especificar el usuario y la carpeta, separados po un espacio, para hacer el trabajo.


Sobre esta noticia

Autor:
Claudio Concepción Certad (681 noticias)
Fuente:
fraterneo.blogspot.com
Visitas:
977
Tipo:
Reportaje
Licencia:
Creative Commons License
¿Problemas con esta noticia?
×
Denunciar esta noticia por

Denunciar

Comentarios

Aún no hay comentarios en esta noticia.