Cómo pasar los argumentos de la línea de comandos en un script de shell
- 4772
- 29
- Mario Gollum
Los scripts bash son archivos de texto simples que contienen una colección de comandos. Los scripts bash pueden ayudar con tareas administrativas, automatización de tareas y ejecutar múltiples comandos. Se utilizan para automatizar tareas/acciones recurrentes.
Podemos poner todos los comandos que se ejecutan en la terminal en un script bash y viceversa. Los scripts bash incluyen conceptos de programación imperativos como bucles, condicionales y funciones.
Los argumentos de línea de comandos son parámetros que se especifican con el nombre de archivo del script bash en el momento de la ejecución. Los argumentos de línea de comandos permiten que el script realice acciones dinámicas basadas en la entrada:
Cómo pasar un argumento a un script de shell
Para pasar un parámetro a un script bash, simplemente escríbelo después del nombre del script bash en el terminal:
./My-test-script.argumento sh
Cómo pasar múltiples argumentos a shell script
También puede especificar múltiples argumentos separados por espacio junto con el nombre del archivo de script bash:
./My-test-script.sh arg_1 arg_2 arg_3 ... arg_n
Podemos usar las variables predefinidas para recordar estos argumentos en el script bash. El primer argumento puede ser retirado por $ 1
, el segundo por $ 2
, etcétera. La variable predefinida "$ 0"
se refiere al script bash en sí. La lista de algunas otras variables predefinidas importantes se da a continuación:
[correo electrónico protegido]
: Valores de todos los argumentosps
: Número total de argumentos$$
: ID de proceso del shell actual
Ahora usaremos un archivo bash llamado animales.mierda como ejemplo.
#!/bin/bash echo "El animal en el primer recinto es: $ 1" Echo "El animal en el segundo recinto es: $ 2" Echo "El animal en el tercer recinto es: $ 3" Echo "El número total de animales en el zoológico son: $#"echo" Los nombres de todos los animales son: $@"1234567 | #!/bin/bash echo "El animal en el primer recinto es: $ 1" Echo "El animal en el segundo recinto es: $ 2" Echo "El animal en el tercer recinto es: $ 3" Echo "El número total de animales en el zoológico son: $#"echo" Los nombres de todos los animales son: [correo electrónico protegido] " |
Ahora ejecutaremos este script en el terminal:
Cómo pasar un argumento que contiene espacio
Si un argumento consiste en múltiples palabras que están separadas por el espacio, entonces necesitamos encerrarlo en citas individuales para pasarlo como un solo argumento:
#!/bin/bash echo "Mi nombre es: $ 1"123 | #!/bin/bash echo "Mi nombre es: $ 1" |
Cómo aprobar argumentos con caracteres especiales
También podemos aprobar caracteres especiales como argumentos. Pero necesitan ser escritos con barras de chaqueta ante ellos.
#!/bin/bash echo "¿Cuánto dinero gastó hoy: $ 1"123 | #!/bin/bash echo "¿Cuánto dinero gastó hoy: $ 1" |
Pasar argumentos usando banderas y opciones en shell script
Usar banderas y opciones es otra forma común de dar información a un script bash. Una opción siempre es seguida por un valor, mientras que las banderas no son seguidas por ningún valor.
Primero, haremos un nuevo script bash que tome dos argumentos diferentes (opciones) I.mi. -N/-Nombre
por nombre, y -I/-ID
Para un número de identificación.
1234567891011121314151617181920 | #!/bin/bash args = $ (getopt -a --options n: i: -long "name :, id:" -"[correo electrónico protegido]") Ev set -"$ args" mientras es verdadero; Do Case "$ 1" en -n |--name) name = "$ 2" echo "Nombre: $ Nombre" Shift 2 ;; -i | --id) identificación = "$ 2" echo "id: $ identificación" turno 2 ;; --) romper;; esacdone |
En el código dado anteriormente primero, creamos una variable que almacena todos los nombres cortos y largos de nuestras opciones. En la segunda línea, evaluamos el Argumentos
variable. Luego usamos un bucle de tiempo para asignar un bloque de código a cada opción.
En el código anterior, el cambio se usa para omitir los valores de las variables. El dígito que sigue el cambio define cuántas variables se omiten.
Similarmente
Ahora agregaremos un -V
bandera que imprime un menú detallado:
1234567891011121314151617181920212223 | #!/bin/bash args = $ (getopt -a --options n: i: v --nong "Nombre :, id :, verbose" -"[correo electrónico protegido]") evalúa -"$ args" mientras verdadero ; Do Case "$ 1" en -n |--name) name = "$ 2" echo "Nombre: $ Nombre" Shift 2 ;; -i | --id) identificación = "$ 2" echo "id: $ identificación" turno 2 ;; -v | --verbose) echo "Por favor use -n/-nombre o -i/-id para aprobar el nombre o el número de identificación respectivamente" ruptura ;; --) romper;; esacdone |
Las banderas no son seguidas por un colon cuando se definen en un script bash porque no toman ningún argumento con ellas a diferencia de las opciones e.gramo. el -norte
La opción toma un nombre con él como Rahul.
Conclusión
Un operador humano que realiza tareas recurrentes manualmente es muy ineficiente. Entonces, tales tareas deben automatizarse. Los guiones pueden ayudarnos a hacer eso.
En este artículo, hemos aprendido a pasar los argumentos a través de la línea de comando a un script bash. Los argumentos de línea de comandos nos ayudan a escribir scripts dinámicos que realizan diferentes funciones dependiendo de la entrada.
Además, también discutimos diferentes tipos de argumentos. También tocamos un poco en variables predefinidas.
- « Cómo hacer una copia de seguridad y restaurar la base de datos PostgreSQL (5 consejos)
- ¿Qué es Apache Prefork, Worker and Event MPM (módulos de procesamiento múltiple) »