Isso funcionou para mim:
testfn () {
printf '>%s<\n' "${@:2}"
}
Exemplo:
$ testfn a b c d
>b<
>c<
>d<
$@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word.
Dê uma olhada na seção Parâmetros Posicionais do Wiki do Bash Hacker , bem como no Mass Usage para mais exemplos e detalhes.
Em geral, quando você aspas duplas de $@
assim, "$@"
ou "${@:2}"
os resultados retornados serão resultados de aspas duplas.
Elementos de matrizes como $@
podem ser acessados usando esta notação:
"${@:START:COUNT}"
trecho da seção Uso em massa
This will expand COUNT number of positional parameters starting at START. COUNT can be omitted (${@:START}), in this case all positional parameters beginning at START are expanded.
Elementos vazios?
Outros afirmaram que o acima não é equivalente porque não pode lidar com elementos vazios. Eu estou no Bash 4.1.7 e parece que sim.
Exemplos:
$ testfn "" a "" c d e
>a<
><
>c<
>d<
>e<
$ testfn '' a '*' c d e
>a<
>*<
>c<
>d<
>e<
$ testfn "" a " " c d e
>a<
> <
>c<
>d<
>e<