/ / Prefiere a los argumentos de línea de comando en linux / bash - linux, bash, argumentos de línea de comando

Anteceda a los argumentos de línea de comando en linux / bash - linux, bash, argumentos de línea de comandos

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 № 1

Si 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