Passando todos os parâmetros em um script Bash

0

No meu script, eu uso awk , as opções são codificadas, mas o nome do arquivo não é, então eu tenho awk options $1 Se eu quisesse uma versão de 2 arquivos eu faria awk options $1 $2 .

Como fazer isso por um número arbitrário de arquivos? ( $1 até "$last" ).

    
por user2370139 01.06.2017 / 11:48

1 resposta

2

Você pode reformular seu script para usar "$@" ; ou você pode verificar $# e executar seus comandos de acordo.

Manual de referência do Bash declara:

$@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$@" is equivalent to "$1" "$2" …. […] When there are no positional parameters, "$@" and $@ expand to nothing (i.e., they are removed).

awk options "$@"

Se você precisar usar alguns parâmetros de linha de comando que não são nomes de arquivos, dê uma olhada em shift builtin.

$# Expands to the number of positional parameters in decimal.

Use-o com algumas condicionais se precisar invocar comandos diferentes, dependendo desse número.

    
por 01.06.2017 / 13:20