Comportamento estranho de 'eco' [duplicado]

2

Enquanto fazia algum trabalho, me deparei com isso

$ echo [Login]
  g
$ echo [kilo]
  k
$ echo [gauke]
  e g k
$ echo [quasi-star]
  k m q

O que está acontecendo em segundo plano que resulta nessa saída? A saída de echo [quasi-star] acabou de perder sua mente dando cartas que nem estão lá.

Observação: Sim, sei que posso obter minha saída com echo "[Login]"

    
por GypsyCosmonaut 07.08.2017 / 12:45

1 resposta

6

Sem as aspas, o shell está fazendo a expansão do nome do caminho (glob) na classe de caractere [] , então presumivelmente você tem arquivos nomeados e , g , k , m , q in o diretório atual - daí o resultado.

echo é basicamente apenas imprimir o resultado da expansão do nome do caminho, nada mais.

Vamos dar um exemplo, echo [quasi-star] :

O resultado da expansão para [quasi-star] seria qualquer caractere único de quasijklmnopqrstar (as duplicatas são mantidas intencionalmente). Do ponto de vista do shell, como não há caracteres circunvizinhos, portanto, ele corresponderia a qualquer nome de arquivo de caractere único no diretório atual da expansão.

    
por 07.08.2017 / 12:49

Tags