Quiero pasar los argumentos de la línea de comandos dados a la secuencia de comandos a otro comando, pero también quiero agregar algunos argumentos adicionales al frente. ¿Cómo puedo hacer esto con bash?
Esto enviará todos los argumentos a través del comando:
command $@
Pero quiero algo más como:
command [argument1, argument2, $@]
¿Cómo puedes hacer algo como esto en bash?
Respuestas
4 para la respuesta № 1Si usted tiene grep foo
y quieres agregar -f
antes de foo
, puedes usar grep -f foo
. Lo mismo aplica aquí:
cmd argument1 argument2 "$@"
13 para la respuesta № 2
La respuesta de @ThatOtherGuy es correcta.
Si estaba buscando "cambiar" un par de argumentos en los parámetros posicionales, haga esto:
set -- arg1 arg2 "$@"
cmd "$@"
0 para la respuesta № 3
Si desea una forma más genérica de hacer esto (recomendado), use esto:
#!/usr/bin/env bash
function xyz {
echo "${args[@]}" # arguments will printed out
}
function abc {
local args=()
args+=(argument1)
args+=(argument2)
args+=("$@")
xyz "${args[@]}"
}
para probar, fuente el código anterior
source script.sh && abc