A expansão acontece na parte de redirecionamento de um comando simples?

0

Do manual do Bash

3.7.1 Simple Command Expansion

When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right.

  1. The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing.

  2. The words that are not variable assignments or redirections are expanded (see Section 3.5 [Shell Expansions], page 21). If any words remain after expansion, the first word is taken to be the name of the command and the remaining words are the arguments.

  3. Redirections are performed as described above (see Section 3.6 [Redirections], page 31).

  4. The text after the ‘=’ in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before being assigned to the variable.

Ele menciona expansões nas seguintes partes de um comando simples: nome do comando, argumentos de comando e atribuições.

Eu queria saber se a expansão também acontece na parte de redirecionamento? Se sim, você pode dar alguns exemplos? Obrigado.

    
por Tim 08.04.2018 / 16:47

1 resposta

1

Sim, se você redirecionar para / do valor de uma variável ou resultado de uma substituição de comando, isso seria expandido na etapa 2.

Exemplo (cria o arquivo chamado file ):

outfile='file'
date >"$outfile"

Você não pode, no entanto, fazer

redir='>'
date $redir file

como isso invocaria date com os operandos > e file . Isso ocorre porque, quando a linha de comando foi analisada na etapa 1, não havia "palavra que o analisador havia marcado como um redirecionamento".

    
por 08.04.2018 / 16:59