Guía para principiantes de BASH – Parámetros de entrada

Guía para principiantes de BASH – Parámetros de entrada

Guía para principiantes de BASH – Parámetros de entrada

VALORACIÓN DEL ARTÍCULO:
5/5


Bienvenido a la segunda parte de la serie Beginners Guide To BASH, que es única porque es el único tutorial de BASH escrito por un principiante para principiantes.

Los lectores de esta guía aumentarán sus conocimientos a medida que yo aumente mis conocimientos y, con suerte, al final de la misma podremos escribir algunos guiones bastante inteligentes.

La semana pasada cubrí la creación de su primer guión que simplemente mostraba las palabras «Hello World». Abarca temas como los editores de texto, cómo abrir una ventana de terminal, dónde poner sus scripts, cómo mostrar las palabras «Hello World» y algunos puntos más finos sobre caracteres de escape como las comillas («»).

Esta semana voy a cubrir los parámetros de entrada. Hay otras guías que enseñan este tipo de cosas, pero me parece que se meten en cosas de bajo nivel y tal vez proporcionan demasiada información.

¿Qué es un parámetro?

En el guión «Hello World» del último tutorial todo era muy estático. El guión no hizo mucho en realidad.

¿Cómo podríamos mejorar el script «Hello World»?

¿Qué hay de un guión que saluda a la persona que lo ejecuta? En lugar de decir «Hello World» dirá «Hello Gary», «Hello Tim» o «Hello Dolly».

Sin la capacidad de aceptar parámetros de entrada necesitaríamos escribir tres scripts «hellogary.sh», «hellotim.sh» e «hellodolly.sh».

Al permitir que nuestro script lea los parámetros de entrada podemos usar un script para saludar a cualquiera.

Para ello, abra una ventana de terminal (CTRL + ALT + T) y navegue hasta la carpeta de scripts escribiendo lo siguiente: (sobre el comando cd)

 scripts de cd 

Cree un nuevo script llamado greetme.sh escribiendo lo siguiente: (acerca del comando táctil)

 touch greetme.sh 

Abra el script en su editor favorito escribiendo lo siguiente: (sobre nano comando)

 nano greetme.sh 

Introduzca el siguiente texto dentro de nano:

 #!/bin/bashecho "hello $@" 

Pulse CTRL y O para guardar el archivo y luego CTRL y X para cerrarlo.

Para ejecutar el script, introduzca lo siguiente en la línea de comandos reemplazando con su nombre.

 sh greetme.sh 

Si ejecuto el script con mi nombre muestra las palabras «Hello Gary».

La primera línea tiene la línea #!/bin/bash que se usa para identificar el archivo como un script bash.

La segunda línea usa la sentencia echo para hacer eco de la palabra hello y luego está la extraña anotación $@. (sobre el comando echo)

El signo $@ se expande para mostrar todos los parámetros que se introdujeron junto con el nombre del script. Así que si escribes «sh greetme.sh tim» se mostrarán las palabras «hello tim». Si escribe «greetme.sh tim smith», se mostrarán las palabras «hello tim smith».

Podría ser bueno para el script greetme.sh decir hola usando sólo el nombre de pila. Nadie dice «hola Gary Newell» cuando se encuentran conmigo, pero podrían decir «hola Gary».

Cambiemos el script para que sólo use el primer parámetro. Abre el script greetme.sh en nano escribiendo lo siguiente:

 nano greetme.sh 

Cambie el guión para que se lea como sigue:

 #!/bin/bashecho "hello $1" 

>

Guarde el script pulsando CTRL y O y luego salga pulsando CTRL y X.

Ejecute el script como se muestra a continuación (reemplace mi nombre por el suyo):

 sh greetme.sh gary newell 

Cuando ejecute el script simplemente dirá «hola Gary» (o con suerte «hola» y como sea que te llames.

El 1 después del símbolo $ básicamente dice al comando echo, use el primer parámetro. Si reemplazas el $1 por un $2, entonces mostraría «hello newell» (o cualquiera que sea tu apellido).

Por cierto, si reemplazas los $2 por $3 y ejecutas el script con sólo 2 parámetros, la salida sería simplemente «Hello».

Es posible mostrar y manejar el número de parámetros realmente introducidos y en los siguientes tutoriales mostraré cómo utilizar el recuento de parámetros con fines de validación.

Para mostrar el número de parámetros introducidos, abra el script greetme.sh (nano greetme.sh) y modifique el texto como sigue:

#!/bin/bashecho «you entered $# names «echo «hello $@»

Pulse CTRL y O para guardar el guión y CTRL y X para salir de nano.

El signo $# en la segunda línea muestra el número de parámetros introducidos.

Hasta ahora todo esto ha sido novedoso pero no muy útil. ¿Quién necesita un guión que simplemente muestre «hola»?

El uso real de las declaraciones de eco es proporcionar una salida verbosa y significativa para el usuario. Si usted puede imaginar que quiere hacer algo complicado que involucra un crujido de números y manipulación de archivos/carpetas, sería útil mostrar al usuario lo que está sucediendo en cada paso del camino.

Por el contrario, los parámetros de entrada hacen que su script sea interactivo. Sin parámetros de entrada necesitarías docenas de scripts haciendo cosas muy similares pero con nombres ligeramente diferentes.

Con todo esto en mente hay algunos otros parámetros de entrada útiles que es una buena idea saber y los incluiré todos en un fragmento de código.

Abra su script greetme.sh y modifíquelo de la siguiente manera:

#!/bin/bashecho «Nombre de archivo: $0 «echo «Process ID: $$»echo «—————————————«echo «you entered $# names «echo «hello $@»

Pulse CTRL y O para guardar el archivo y CTRL y X para salir.

Ahora ejecute el script (reemplace con su nombre).

 sh greetme.sh 

Esta vez el script muestra lo siguiente:

 Nombre del fichero: greetme.shProcess ID: 18595--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

El $0 en la primera línea del script muestra el nombre del script que está ejecutando. Note que es dólar cero y no dólar o.

El $$ en la segunda línea muestra el ID de proceso del script que está ejecutando. ¿Por qué es útil? Si está ejecutando un script en primer plano, puede cancelarlo simplemente pulsando CTRL y C. Si ejecutara el script en segundo plano y comenzara a reproducirse y a hacer lo mismo una y otra vez, o si empezara a causar daño a su sistema, tendría que matarlo.

Para matar un script que se ejecuta en segundo plano se necesita el ID de proceso del script. ¿No sería bueno que el script diera el id del proceso como parte de su salida? (sobre los comandos ps y kill)

Finalmente, antes de terminar con este tema, quería discutir a dónde va el resultado. Cada vez que el script se ha ejecutado hasta ahora, la salida se ha mostrado en la pantalla.

Es bastante común que la salida del script se escriba en un archivo de salida. Para ello, ejecute el script de la siguiente manera:

< sh greetme.sh gary> greetme.log

El símbolo> en el comando anterior envía el texto «hello gary» a un archivo llamado greetme.log.

Cada vez que se ejecuta el script con el símbolo> se sobrescribe el contenido del archivo de salida. Si prefiere agregar al archivo, reemplace el archivo>; con>>>.

Resumen

Ahora debería poder escribir texto en la pantalla y aceptar los parámetros de entrada.

TAMBIÉN TE INTERESA

televisión-marca-Amazon

¿Cuándo llegará a España la televisión de marca Amazon?

Quizás muchos consumidores no lo sepan, pero en el mercado internacional existen varios modelos de televisión de marca Amazon. Efectivamente, el gigante de ecommerce, al igual que los productos de moda, dispone de una marca propia para el segmento de las televisiones. La mala noticia es que, de momento, su mercado es limitado ya que

soluciones-de-Lenovo-para-el-trabajo-colaborativo

ThinkSmart View Plus de Lenovo, trabajo colaborativo a otro nivel

El dispositivo ThinkSmart View Plus de Lenovo redefine el concepto del trabajo colaborativo en las empresas. Ahora que muchos de los empleados de una oficina se conectan con otros mediante Micosoft Teams, Lenovo plante un dispositivo cuya única función es ofrecer servicio para el trabajo conectado. ¿Qué es y qué ofrece ThinkSmart View Plus? ThinkSmart

10-razones-para-apostar-por-Google-Ads

Google Ads o la mejor manera de gestionar la publicidad en internet para un negocio

Google Ads es una de las herramientas publicitarias más poderosas que existen en la actualidad. A través de ella, las empresas pueden llegar a un público amplio y diverso de manera efectiva, aumentar su visibilidad en línea y aumentar sus ventas. Pero ¿cómo exactamente puede Google Ads ayudar a un negocio? En este artículo, exploraremos

foto-del-sol-creada-por-AI

Webs de inteligencia artificial para crear imágenes

Inteligencia artificial para crear imágenes, esa es una de las tendencias que ha popularizado la IA y el boom de ChatGPT y compañía. Hoy vamos a hablar de una serie de herramientas, páginas webs o soluciones que permiten crear imágenes de la nada para poder utilizar de forma libre. Hay muchas, pero nosotros recogemos en

dia-del-padre

Con estos 8 productos de LG seguro que aciertas en el Día del Padre

En lugar de rompernos la cabeza buscando productos de distintas marcas para regalar en el Día del Padre, nosotros hemos acudido a una firma como LG para recomendar artículos que podrían satisfacer a todos los que tienen hijos. Es su día y, siendo honestos, la tecnología es, posiblemente, el regalo que más aprecien. De modo