Eu quero passar adiante os argumentos de linha de comando dados ao script para outro comando, mas eu também quero adicionar alguns argumentos adicionais na frente primeiro. Como posso fazer isso com o bash?
Isso enviará todos os argumentos para o comando:
command $@
Mas eu quero algo mais parecido com:
command [argument1, argument2, $@]
Como você pode fazer algo assim em bash?
Respostas:
4 para resposta № 1Se você tem grep foo
e você quer adicionar -f
antes foo
, você pode usar grep -f foo
. A mesma coisa se aplica aqui:
cmd argument1 argument2 "$@"
13 para resposta № 2
A resposta do @ThatOtherGuy está correta.
Se você estava procurando "invocar" alguns argumentos nos parâmetros posicionais, faça o seguinte:
set -- arg1 arg2 "$@"
cmd "$@"
0 para resposta № 3
Se você quiser uma maneira mais genérica de fazer isso (recomendado), use isto:
#!/usr/bin/env bash
function xyz {
echo "${args[@]}" # arguments will printed out
}
function abc {
local args=()
args+=(argument1)
args+=(argument2)
args+=("$@")
xyz "${args[@]}"
}
para testar, fonte do código acima
source script.sh && abc