/ / Prefixo a argumentos de linha de comando em linux / bash - linux, bash, argumentos de linha de comando

Prefixo aos argumentos de linha de comando em linux / bash - linux, bash, argumentos de linha de comando

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

Se 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