Como distinguir entre um parâmetro posicional e uma opção?

5

Tanto um parâmetro posicional ($ 1, $ 2, e assim por diante) quanto uma opção (e / ou argumento) são escritos diretamente após um comando, então qual é a definição ou expressão para explicar como distingui-los?

Em outras palavras, como explicar formalmente a diferença entre um parâmetro posicional e uma opção (e / ou argumento)?

    
por JohnDoea 26.11.2018 / 10:46

1 resposta

11

Uma opção (também chamada de "flag" ou "switch") é um tipo de argumento de linha de comando. Um argumento de linha de comando é uma única palavra (ou string entre aspas) presente na linha de comando de um utilitário ou função shell.

Ao chamar um shell script ou função shell com um certo número de argumentos, cada argumento individual estará disponível como um parâmetro posicional dentro do script ou da função.

Terminologia:

Um "argumento" pode ser

  • uma "opção" (como -a ),
  • um "argumento-da-opção" (como foo em -a foo se -a receber um argumento) ou
  • um "operando" (um argumento de não opção que também não é um argumento de opção, por exemplo foo in -a foo if -a não não aceita um argumento de opção) .

Exemplo real de todos os itens acima (usando o GNU mv ):

mv -t targetdir -f file1 file2
  • Argumentos: -t , targetdir , -f , file1 e file2
  • Opções: -t e -f
  • Argumentos de opções: targetdir
  • Operandos: file1 e file2 .

De as definições POSIX :

[An argument is, in] the shell command language, a parameter passed to a utility as the equivalent of a single string in the argv array created by one of the exec functions. An argument is one of the options, option-arguments, or operands following the command name.

[An option is an] argument to a command that is generally used to specify changes in the utility's default behavior.

[An option-argument is a] parameter that follows certain options. In some cases an option-argument is included within the same argument string as the option-in most cases it is the next argument.

[An operand is an] argument to a command that is generally used as an object supplying information to a utility necessary to complete its processing. Operands generally follow the options in a command line.

Os parâmetros posicionais em um shell script ou função shell serão os argumentos dados na linha de comando do script ou da função, independentemente de os argumentos serem opções, argumentos de opção ou operandos.

Os parâmetros posicionais também podem ser definidos usando

set -- something "something else" bumblebees

Isso define $1 , $2 e $3 para as três cadeias de caracteres e limpa quaisquer outros parâmetros posicionais.

Nesse caso, os parâmetros posicionais não têm mais relação com os argumentos transmitidos na linha de comando do utilitário.

Veja também:

por 26.11.2018 / 10:55