Paso de parámetros y opciones
Clase 15 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Clase 15 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Jose Miguel Diaz
Alvaro Legarda
Erick Saravia
Alejo Emiliano Esposito Schillaci
Enzo Venturi
Eleiny Bello
Gerardo Manuel Reyes Fernández
Jorge Luis Ochoa Islas
Luis Quiroz Prada
Andres Condezo Monge
Luis Alberto Juarez Corona
Ignacio Bellucci
German Tellez Vanegas
Mario Alejandro Crespo Reyes
Víctor Macedo Becerril
Jose Suarez
Jose Flores
Junior Cupe Casquina
Ignacio Damián González
Jesus Martinez
Damián Lores Domínguez
Federico Cambres
Luis Esteban Martinez Fuentes
Juan Sebastián Ricaurte Macías
Enzo Venturi
Juan Manuel Valencia
Marina Sonia
Joserra Parada Fontaiña
Adrián de los Reyes
Alfonso Adame Rueda
xxxxxxxxxx xxxxxxxxxxxxxxxx
Alfonso Adame Rueda
Enzo Venturi
No entendí esta clase.
Estoy en las mismas, gracias por compartir el enlace compañero
Muestra como implementar el uso de opciones, que modifican el comportamiento de un comando, y en este caso un script, tomando de ejemplo el comando tail que se usa para leer las ultimas lineas de un archivo se puede usar de la siguiente manera
# mostrar las ultimas 10 lineas de un archivo # donde myFile es un argumento tail myFile.txt # Indicar que se desea ver 20 lineas del mismo archivo tail -n 20 myFile.txt
Claro el ejemplo no es exacto ya que se asocia un argumento a la opcion n pero seria interesante que muestren como hacerlo, o que quede como un reto
Sinceramente el curso esta muy bueno, pero está clase está mal. Paso directamente a bucles sin explicar primero la sintaxis de los condicionales y bucles.
Si, también pienso lo mismo.
Comparaciones De Cadenas Alfanumericas
Operador Verdad (TRUE) si:
cadena1 = cadena2 cadena1 es igual a cadena2 cadena1 != cadena2 cadena1 no es igual a cadena2 cadena1 < cadena2 cadena1 es menor que cadena2 cadena1 > cadena 2 cadena1 es mayor que cadena 2 -n cadena1 cadena1 no es igual al valor nulo (longitud mayorque 0) -z cadena1 cadena1 tiene un valor nulo (longitud 0)
Comparacion De Valores Numericos
Operador Verdad (TRUE) si:
x -lt y x menor que y x -le y x menor o igual que y x -eq y x igual que y x -ge y x mayor o igual que y x -gt y x mayor que y x -ne y x no igual que y
Comprobacion De Atributos De Fichero
Operador Verdad (TRUE) si:
-d fichero fichero existe y es un directorio -e fichero fichero existe -f fichero fichero existe y es un fichero regular (no un directorio, u otro tipo de fichero especial)
-r fichero Tienes permiso de lectura en fichero -s fichero fichero existe y no esta vacio -w fichero Tienes permiso de escritura en fichero -x fichero Tienes permiso de ejecucion en fichero (o de busqueda si es un directorio)
-O fichero Eres el dueño del fichero -G fichero El grupo del fichero es igual al tuyo.
fichero1 -nt fichero2 fichero1 es mas reciente que fichero2 fichero1 -ot fichero2 fichero1 es mas antiguo que fichero2
Debe cambiar ese color azul del bash no veo que pone
Sabes como cambiarlo?
Estas son las opciones mas utilizadas para los script de bash -a Listar todos los elementos. -c Obtener la cantidad de elementos. -d Directorio de salida. -e Expandir elementos. -f Especificar un archivo. -h Mostrar la página de ayuda. -i Ignorar mayúsculas. -l listar un texto. -n Decir que no a una pregunta. -o Para enviar la salida a un archivo o más. -q No preguntar al usuario. -r Procesar algo recursivamente. -s Modo sigiloso. -v Modo detallado. -x Especificar el ejecutable. -y Decir sí sin preguntar al usuario. info de https://likegeeks.com/es/scripting-de-bash-parametros-y-opciones/
Gracias por la información.
Yo revisaria este video porque quedo muy mal explicado. Creo que confunde mas de lo que enseña ademas que tiene errores. Me quede buscando ese $! como loco
min 4:32. Que significa el parámetro -n en el ciclo while?
según la clase anterior a esta, el parametro -n me indica el numero de caracteres que tendra esta entrada, en este caso esta ligada a la variable $1.
En el WHILE, se usa la opción -n $1, la cual quiere decir:_ Mientras exista argumento en $1 haz…_
Esto es porque se usa el comando shift, el cual elimina el argumento que esté guardado en $1, volviendo a enumerar los argumentos desde $1 hasta $(n-1), donde n el número de agumentos.
Sugerencia al profesor, cambiar los colores de la consola, en ocasiones cuesta mucho leer los comandos que escribe.
Opciones y parametros
Antes se toco el tema de los argumentos, y así se quedo para que se entendiera, pero se tiene que mencionar que un argumento cae dentro de una de las dos siguientes categorías.
Options(Opciones). este argumento modifica el comportamiento del comando, pues lo utiliza ya sea para saber que se va a proceder, de hecho estos argumentos fueron los primeros que utilizamos desde el inicio por ejemplo al enlistar el contenido del directorio actual, incluso aquello archivos ocultos.
ls -a
La a en este comando es un argumento tipo opcion, y como resultado modifico su comportamiento y nos otorgo un output distinto, las opciones se destacan por tener el prefijo -.
Params (Parametros). Estos argumentos son datos que nuestro comando utilizara o que alguna opcion utilizara, en su proceso, no modifican el comportamiento.
#!/usr/bin/env bash #lec_9_file.sh echo "Inputs:" echo "parameter 1: $1 , parameter 2: $2, parameter 3: $3, parameter 4: $4 all : $*" echo "Checking values:" while [[ -n "$1" ]] #while exit options do case $1 in #chose a case -a) echo "$1 : it is the -a option" #exit ;; -b) echo "$1 : It is the -b option" #exit ;; -c) echo "$1 : It is the -c option" #exit ;; *) echo "$1 : is not an option" #exit ;; esac; shift; done # bash lec_9_file.sh -a -b -f -g
El -n es una prueba para verificar si el string está vacío.
Si el $1 está vacío o ya evaluó el último argumento de este string, el bucle no se ejecutará nuevamente.
Fuente de consulta
Por otra parte entiendo que:
- son opciones. Y éstas pueden ser evaluadas en un case.Último aporte:
shift indica que se evalúe el siguiente parámetro del array recorrido en el while (un string en este caso). Además de evaluar el siguiente, elimina el evaluado en el ciclo anterior. Cuando se elimine el último argumento y el string esté vacío, va a salir del bucle.
Fuente consultadaesac indica el fin del casedone indica el fin del while$! no imprime nada porque es un error. En realidad el profesor quiso escribir $1Gracias, esta info vale oro, si no no entendia la clase
Esta clase debería estar mejor explicada
No me quedo clara esta clase.
Se me complica dos cosas en este video, el español del profesor y el codigo. El profe se ve que tiene mucho conocimiento pero no sé me cuesta entenderle :(
"El tema de", me saca el mal genio a veces.
@juanricaurte14 jaja
Muchas gracias por el esfuerzo, pero a esta clase le faltó mucho contexto la verdad.
Tenemos que tener en cuenta que : shift lo que hace es eliminar $1 y pasa $2 a ser $1, la siguiente vez, elimina $2 y pasa $3 a $1, y así sucesivamente Y también tenemos que tener en cuenta que [ -n "$1" ] el -n implica que es cierto mientras $1 no sea ni vacío ni nulo, es decir mientras exista y sea distinto de vacío.
# !/bin/bash # Programa paso de opciones con o sin parámetros # Autor: JRPF - Dic - 2022 clear echo -e "\nPrograma opciones" echo -e "Opción 1 enviada : $1" echo -e "Opción 2 enviada : $2" echo -e "Opciones enviadas: $*" echo -e "\n" echo -e "\nRecuperar valores" i=0 while [ -n "$1" ] do (( i +=1 )) case "$1" in -a) echo "$i -> -a option utilizada";; -b) echo "$i -> -b option utilizada";; -c) echo "$i -> -b c option utilizada";; *) echo "$i -> $1 no es una opción válida";; esac shift done
En el while case *) el profe puso "$!" y es "$1"
hola buenos días
tengo una pregunta : si yo quiero hacer que mi script se ejecute automáticamente ,por ejemplo al arrancar mi servidor remoto, que se debe hacer , tal vez con un daemon , quien sabe de esto por favor,
gracias
En linux
A) creas tu script en el directorio de scripts iniciales, típicamente /etc/init.d/ y das permisos de ejecución
B) Usas crontab
super, muchas gracias por responder
¿Por qué «$!» no indica el valor inválido en el output?