traduccion sheet script example comandos cheat bash variables command-line-arguments defaults

sheet - if bash



Bash argumentos de la lĂ­nea de comandos que reemplazan los valores predeterminados para las variables (2)

Tengo un script que tiene varios archivos de entrada, generalmente estos son valores predeterminados almacenados en un lugar estándar y son llamados por el script.

Sin embargo, a veces es necesario ejecutarlo con entradas modificadas.

En la secuencia de comandos que tengo actualmente, digamos 3 variables $ A $ B y $ C, ahora quiero ejecutarlo con un $ B no predeterminado, mañana tal vez quiera ejecutarlo con un $ A y $ B no predeterminados.

He analizado cómo analizar los argumentos de la línea de comandos: ¿Cómo puedo analizar los argumentos de la línea de comandos en Bash?

¿Pero no estoy seguro de cómo lidiar con tener algún conjunto de argumentos de línea de comandos algunas veces?

No tengo suficiente representante para responder mi propia pregunta, pero tengo una solución:

https://stackoverflow.com/a/4610469/2339623

#!/bin/bash a=input1 b=input2 c=input3 while getopts "a:b:c:" flag do case $flag in a) a=$OPTARG;; b) b=$OPTARG;; c) c=$OPTARG;; esac done

Disculpas, obviamente no busqué tan bien como pensaba ...


En lugar de utilizar argumentos de la línea de comandos para sobrescribir los valores predeterminados, también puede establecer las variables fuera de la secuencia de comandos. Por ejemplo, el siguiente script se puede invocar con foo=54 /tmp/foobar o bar=/var/tmp /tmp/foobar :

#! /bin/bash : ${foo:=42} : ${bar:=/tmp} echo "foo=$foo bar=$bar"


Puede hacerlo de esta manera, vea Expansión de parámetros de shell en la página de manual de bash

#! /bin/bash value=${1:-the default value} echo value=$value

En la línea de comando:

$ ./myscript.sh value=the default value $ ./myscript.sh foobar value=foobar