No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Programación en Bash Shell

Curso de Programación en Bash Shell

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Script con Argumentos

8/43
Recursos

Hay algunos identificadores para cuando ejecutamos un script con argumentos

$0: Se refiere al nombre del Script
$1 al ${10}: Se refiere al número de argumento. Si es más de uno lo colocamos dentro de llaves.
$#: Es útil para conocer el número de argumentos enviados.
$*: Con este podemos conocer todos los argumentos enviados.

Aportes 38

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

#!/usr/bin/env bash
#lec_4_file
#Executing scripts with arguments

# $0 //tp get the name of the script
# $1 $(10) //tp get the arguments
# $# //to count arguments
# $* to print all the arguments

courseName=$1 #//first argument to courseName
courseTimetable=$2

echo "parameters:"
echo "courseName:$courseName"
echo "courseShip:$courseTimetable"

echo "parameters number:$#"
echo "list parameters:$*"

#to execute use:
# bash lec_4_file.sh "name course" "18:00 to 20:00" "OTHER_I" "OTHER_II"

Tengo este script, para complementar, que muestra como funcionan los carácteres especiales de los que habla el profe y otros mas.
Mi script utiliza Firefox para ejemplificar el último proceso en segundo plano, pueden cambiarlo por otro programa para que lo vean funcionar 😃

#!/bin/bash 
#
#Ejecución: $ ./parametros.sh argumento1 argumento2 argumento3
#Cuantos argumentos se deseen
#By Dex

 
# Muestra el nombre del script 
printf "\nPARÁMETRO ESPECIAL \$0\n"
echo "El nombre del script es: $0" 

# Muestra el número de parametros
printf "\nPARÁMETRO ESPECIAL \$#\n" 
echo "Hay $# parámetros" 

# Lista de parámetros (en un solo argumento) 
printf "\nPARÁMETRO ESPECIAL \$*\n"
echo "Parámetros (un solo argumento) : $*" 


# Lista de parámetros (un parámetro por argumento) 
printf "\nPARÁMETRO ESPECIAL \$@\n"
echo "Parámetros (un parámetro por argumento) :" 
for param in $@
do 
echo "$param" 
done 

# Muestra el PID del script 
printf "\nPARÁMETRO ESPECIAL \$$\n"
echo "El PID del script ejecutado es: $$" 

# Creamos un proceso en segundo plano 
printf "\nPARÁMETRO ESPECIAL \$!\n"
echo "Abriendo Firefox en segundo plano . . ."
firefox & 

# Muestra el PID del proceso ejecutado en segundo plano 
echo "El PID de Firefox ejecutandose en segundo plano es: $!" 

# Muestra el código de retorno del último comando, en este caso "echo" 
printf "\nPARÁMETRO ESPECIAL \$?\n"
echo "El código de retorno del comando es: $?" 

# Generamos un error para ejemplificar el cas
echo "Generando un error . . ." 
lss -l

# Muestra el código de retorno del último comando 
echo "El código de retorno del comando erróneo es: $?" 

$0 = Nombre del Script
$1 al ${10} = El numero de argumento. Si es mas de un dígito se pone entre llaves.
$# = Contador de argumentos
$* = Refiere a todos los argumentos

the father of argc & argv

En vez de:

$~ bash sample.sh "Hey" "Gopher"

Intentar:

$~ bash sample.sh {"Hey","Gopher"}

Era tan dificil escoger un terminal que se vean bien las variables en vez de este espacio negro?Es desagradable seguir el curso con esta interfaz tan mala.

Hola Muchachos,
Como yo no entendi muy bien esta parte me puse a mirar bien como es el tema de los parametros. Les adjuntos dos imagenes, la primera es el codigo bash para la ejecucion del script, la segunda es el resultado del codigo. En esta ultima aclaro como se pasan los parametros. Si alguien no entiend me dice…

# !/bin/bash
# Programa para ejemplificar el paso de argumentos

nombreCurso=$1
horarioCurso=$2
echo "El nombre del curso es: $nombreCurso dictado en el horario de $horarioCurso"
echo "El numero de parametros enviados es: $#"
echo "Los parametros enviados son: $*"

Los colores de la terminal con vim son horrorosos, el azul oscuro sobre fondo negro no se ve nada.

Bash funciona con numeros, pero los humanos funcionamos con palabras. Como se que estoy mandando los argumentos en el orden correcto? Creo que es muy facil llegar a confundirse en ese aspecto, aunque claro, supongo que la solución sencilla seria poner un comentario en el script acerca de como correrlo correctamente
En Bash, un script puede recibir argumentos que se pasan al ejecutar el script desde la línea de comandos. Estos argumentos se pueden utilizar dentro del script para realizar diferentes acciones. Aquí te muestro cómo trabajar con argumentos en un script de Bash. \### Crear un Script con Argumentos 1\. \*\*Crear el Script\*\* Abre tu editor de texto y crea un archivo llamado `example\_script.sh`. ```bash nano example\_script.sh ``` 2\. \*\*Escribir el Script\*\* Aquí hay un ejemplo simple de un script que utiliza argumentos: ```bash \#!/bin/bash \# Verifica si se proporcionaron al menos dos argumentos if \[ "$#" -lt 2 ]; then echo "Usage: $0 \<name> \<age>" exit 1 fi \# Asigna los argumentos a variables NAME=$1 AGE=$2 \# Muestra un mensaje usando los argumentos echo "Hello, $NAME! You are $AGE years old." ``` \- `$0` es el nombre del script. \- `$1`, `$2`, etc., son los argumentos proporcionados al script. 3\. \*\*Hacer el Script Ejecutable\*\* Cambia los permisos del archivo para hacerlo ejecutable: ```bash chmod +x example\_script.sh ``` 4\. \*\*Ejecutar el Script con Argumentos\*\* Ejecuta el script pasando dos argumentos: ```bash ./example\_script.sh Alice 30 ``` Salida esperada: ``` Hello, Alice! You are 30 years old. ``` \### Manejo de Argumentos \- \*\*Número de Argumentos\*\*: Usa `$#` para obtener el número de argumentos pasados al script. ```bash echo "Number of arguments: $#" ``` \- \*\*Argumentos Opcionales\*\*: Puedes proporcionar argumentos opcionales y manejar su ausencia en el script. ```bash \# Verifica si un argumento opcional fue proporcionado if \[ -z "$3" ]; then echo "No optional argument provided." else echo "Optional argument: $3" fi ``` \- \*\*Argumentos con Nombres\*\*: Puedes usar `getopts` para manejar argumentos con nombres. ```bash \#!/bin/bash while getopts "n:a:" opt; do case ${opt} in n ) NAME=$OPTARG ;; a ) AGE=$OPTARG ;; \\? ) echo "Invalid option: -$OPTARG" >&2 ;; : ) echo "Invalid option: -$OPTARG requires an argument" >&2 ;; esac done echo "Name: $NAME" echo "Age: $AGE" ``` Ejecuta el script usando opciones con nombres: ```bash ./example\_script.sh -n Alice -a 30 ``` \### Resumen Los scripts de Bash pueden recibir y manejar argumentos de diversas maneras. Puedes usarlos para pasar datos al script y adaptar su comportamiento según estos datos. Los ejemplos anteriores te proporcionan una base para comenzar a trabajar con argumentos en tus propios scripts.

Hola

Les comparto el script 4_argumentos.sh realizado en clase.

Para ejecutar script con agumentos, pasamos el nombre el script y separados por espacio entre comillas pasamos cada uno de los argumentos.

./4_argumentos.sh "Curso de Programación en Bash Shell" "Noches de Platzi"
# !/bin/bash
# Programa para ejemplificar el paso de argumentos

nombreCurso=$1
horarioCurso=$2

echo "El nombre del curso es: $nombreCurso dictado en el horario: $horarioCurso"
echo "El numero de parámetros enviados es: $#"
echo "Los parámetros enviados son: $*"

Saludos

Este curso esta muy bueno, entendible todo y claro el camino hacia donde vamos.
⭐⭐⭐⭐⭐

<h5>Ejemplo</h5>
  • Creamos un nuevo script que solicite dos argumentos de la siguiente manera:
# !/bin/bash
# Programa para ejemplificart el paso de argumentos

nombreCurso=$1
horarioCurso=$2

echo "El nombre del curso es: $nombreCurso dictado en el horario de $horarioCurso"
echo "El numero de parámetros enviados es: $#"
echo "Los parámetros enviados son: $*"
  • Para ejecutar este script se deben enviar los argumentos, así:
bash 4_argumentos.sh "Bash Shell" "Nocturno" #Se recomienda que las cadenas deben ir entre ""
  • ¿CÓMO EJECUTAR UN SCRIPT CON ARGUMENTOS?
  1. $0 El nombre del script.
  2. $1 al ${10} El número de argumentos, si son más de un dígito se utiliza la llaves.
  3. $# Contador de argumentos.
  4. $* Refiere a todos los argumentos.

qué buen curso!

Que bonito 😃

! /bin/bash

Programa para ver el proceso de argumentos

nombreCurso=$1
horarioCurso=$2

echo "El nombre del curso es: $nombreCurso dictado en el horario de: $horarioCurso"
echo "El numero de parametros enviados es: $#
echo “Los parametros enviados son: $*”

Terminado saliendo de vim con esc shift :wq queda grabado.

En la consola procedemos a cambiar permisos con chmod +x para ejecutarlo.

Por si quieres solo copiarlo!

#!/bin/bash
#Parametros

nombreCurso=$1
horarioCurso=$2

echo "EL nombre del curso es: $nombreCurso"
echo "El horario del curso es: $horarioCurso"
echo "El numero de parametros enviados es de: $#"
echo “Los parametros enviados son: $*”

Cómo ejecutar un script con argumentos

Un resumen de los identificadores: Link.

Excelente clase.

Existen varios tipos de parámetros especiales como:  $*, $@, $#, $$, $!, $?, $- y $_. pueden consultar cada uno de los parámetros desde el manual `man bash`

Ok lo que entendí:

$ para asignar un parametro
$# para arrojar el numero de parametros mandado
$* para arrojar ESOS parametros

Muy bueno el curso, solo que me gustaría que pusiera algunos ejercicios para entretenerme un rato pensando y aplicando lo aprendido.

Se ve muy poco

Excelente Marco.
Muchas gracias por esto, fue genial

$0: Nombre del script
$1 al $[10]: Argumantos
$#: Contador de argumentos
$*: Refiere a todos los argumentos

Hola, quiero compartirles mis apuntes.

https://www.instagram.com/p/CFI9WGmHWoX/?igshid=6wxl40euucz7

Saludos.

genial

Listo

 # !/bin/bash/
 # Programa que recibe argumentos

 nombreCita=$1
 horarioCita=$2

 echo "La cita es: $nombreCita a las $horarioCita"
 echo "El numero de partametros enviados es $#"
 echo "Los paarmetros enviados son $* y son $1 y $2"

para ejecutar

./4_argumentos.sh "Frijolada" "12:00 pm"

$

#! /bin/bash

course_name=$1
course_time=$2

echo "The course name is: $course_name, taught at $course_time."
echo "The sent params numbers is: $#."
echo "The sent params are: $*"
# ! /bin/bash
# Programa para ejemplificar el paso de argumentos
# Autor: Martin Davila

nombreCurso=$1
horarioCurso=$2

echo "El nombre del curso es: $nombreCurso dictado en el horario de $horarioCurso"
echo "El número de parámetros enviados es: $#"
echo "Los parámetros enviados son: $*"```