Por que \ n expande para n no bash?

0

Quando se trata da operação da shell , consigo entender a etapa um, mas o segundo passo um pouco me intriga. Aqui está o meu entendimento:

Primeiro, o shell divide a entrada em palavras e operadores e, em seguida, executa de acordo com as regras de cotação. Aqui estão algumas das minhas perguntas. Quando eu executo:

$ \n
bash: n: command not found

Por que é o n: command not found ? não \n: command not found ?

$ $'\n'
bash: $'\n': command not found

Por que ele não executa as cotações ANSI-C?

A propósito, quando a entrada é um arquivo de script, como é dividido em palavras e operadores? Linha por linha ou como um todo?

    
por Alaneuler 26.02.2017 / 14:30

1 resposta

2

A barra invertida cita o seguinte caractere (consulte QUOTING em man bash ). Por isso, \n é interpretado como n (e sendo a primeira palavra de um comando, isso evitaria expansão de alias, consulte ALIASES em man bash ).

$'\n' é interpretado como ANSI-C. Bash apenas usa a mesma cotação para mostrar o caráter problemático. Você pode obter o mesmo erro de

'
'

que é equivalente a ele.

O processo de divisão de palavras é descrito no início de man bash . Em caso de dúvida, faça uma pergunta mais concreta ou consulte o código fonte .

    
por 26.02.2017 / 15:22