Leer argumentos en scripts en bash

Extracto

@pedroruizhidalg― Como venimos escribiendo acerca del entorno de terminal bash sobre sus variables, las posibilidades del entorno y preparar nuestro sistema para ejecutar scripts incluso con algún ejemplo sobre criptografía en este artículo vamos a ver la forma de recibir argumentos desde la linea de comandos para ser leídos en un script bash.

Abreviaturas usadas

Descripción

Como describimos en el artículo sobre bash  los comandos en Linux por regla general se ajustan al siguiente esquema.

$ Orden Opciones Argumentos

También por regla general los argumentos en Linux suelen ser nombres de archivos. Pero nosotros podemos crear scripts conforme a nuestros gustos, apetencias, forma de trabajar…

Ejecución

Una vez creado ambiente para ejecutar scripts, a modo de ejemplo vamos a crear un script para copiar archivos a un directorio que vamos a crear para tener un repositorio de los archivos que nos interese.

$ cd ~/
$ mkdir sandbox
  1. Nos situamos en nuestra directorio home.
  2. Creamos el directorio sandbox en nuestro home.

Ahora nos dirigimos al directorio que hemos preparado para ejecutar scripts ―en mi caso ~/.bin―. Allí vamos a crear un script que copie automáticamente a sandbox.

$ cd ~/.bin
$ touch tosandbox
$ chmod u+x tosandbox
$ gedit tosandbox &
  1. Cambiamos el directorio a .bin.
  2. Creamos el archivo “tosandbox” vacío.
  3. Le damos permisos de ejecución para el usuario (o sea, nosotros)
  4. Editamos con gedit el archivo en background. Por supuesto puedes usar el editor que más te guste. Guardamos el archivo.
#!/bin/bash
cp $1 ~/sandbox/
  1. En la primera linea informamos al sistema que este script debe ser ejecutado en bash.
  2. En la segunda $1 corresponde al argumento ―es decir, en este caso al nombre del fichero que queremos copiar― en la carpeta sandbox. Es decir, los argumentos, por orden de aparición, adquieren dentro del script como nombre para referirnos a ellos $1, $2, $3
Probamos que funciona
$ cd ~/
$ touch archivodeprueba
$ tosandbox archivodepueba
$ ls -l sandbox
$ ls -l
total 0
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:25 archivodeprueba

Como podemos comprobar, y era previsible, tosandbox a enviado nuestro archivo de prueba a la carpeta deseada.

Usar un número desconocidos de argumentos

Sí. Se puede hacer así. Modificamos nuestro ~/.bin/sandbox

#!/bin/bash
cp $* ~/sandbox/

En la segunda línea hemos sustituido 1 por *. Esto significa que “todos los argumentos que enviemos serán copiados a la carpeta sandbox. Lo probamos.

$ cd ~/
$ touch unfichero otrofichero
$ tosandbox unfichero otrofichero
$ ls -l sandbox
total 0
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:25 archivodeprueba
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:35 unarchivo
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:35 otroarchivo

Epílogo

Con esta entrada del blog podéis empezar a crear vuestros propios scripts aportándoles argumentos desde la linea de comandos.

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

Clave pública @pedroruizhidalg.pub.key

#aboutpedroruizhidalgo

♻ miotroblogsite ahorra papel
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: