scripts script programacion operaciones manejo español ejemplos ejecutar comandos comando cadenas aritmeticas bash command-line-arguments

programacion - scripts bash ejemplos



¿Cómo cambiar un argumento de línea de comando en Bash? (2)

Optimizando la legibilidad y mantenibilidad, puede ser mejor asignar $1 y $2 a variables más significativas (no sé, input_filename = $1 y output_filename = $2 o algo así) y luego sobrescribir una de esas variables ( input_filename = ''chintz'' ) , dejando la entrada al script sin cambios, en caso de que sea necesario en otro lugar.

¿Hay alguna manera de cambiar los argumentos de la línea de comandos en un script Bash? Digamos, por ejemplo, que un script Bash se invoca de la siguiente manera:

./foo arg1 arg2

¿Hay alguna forma de cambiar el valor de arg1 dentro del script? Diga algo como

$1="chintz"


Tienes que restablecer todos los argumentos. Para cambiar, por ejemplo, $3 :

$ set -- "${@:1:2}" "new" "${@:4}"

Básicamente, set todos los argumentos en sus valores actuales, excepto los que desea cambiar. set -- también es especificado por POSIX 7 .

La notación "${@:1:2}" se expande a los dos argumentos posicionales (de ahí los 2 en la notación) a partir del desplazamiento 1 (es decir, $1 ). En este caso, se trata de una abreviatura de "$1" "$2" , pero es mucho más útil cuando se quiere reemplazar, por ejemplo, "${17}" .