Como manipular todos os parâmetros de um script shell de uma só vez?

2

Enquanto para uma quantidade finita de parâmetros pode-se explicitamente fazer algo como

wrapped_function "${1#prefix}" "${2#prefix}" "${3#prefix}"  # etc.,

não existe uma maneira mais simples de manipular todos os parâmetros de uma só vez?

    
por Tobias Kienzler 12.11.2013 / 12:23

1 resposta

6

Claro que existe,

wrapped_function "${@#prefix}"

O $@ representa a coleção de todos parâmetros $1 , $2 , ... (consulte aqui ) em citações individuais, ou seja, basicamente

$@="\"$1\" \"$2\" \"$3\" ..."

no entanto, o bash aplica manipulações de variáveis individualmente no parâmetro each , ou seja,

${@#prefix}="\"${1#prefix}\" \"${2#prefix}\" ..."

A sintaxe ${VAR#prefix} significa que se $VAR começar com prefix , remova-a, por exemplo,

TEST="/tmp/var/bin"; echo ${TEST#/tmp}  # yields "/var/bin"

Da mesma forma, pode-se usar % em vez de # para remover um sufixo.

    
por 12.11.2013 / 12:23