Porque ?
é um caractere curinga especial para o shell. $ abc não está presente, portanto, é expandido para uma cadeia vazia e ?
é substituído por qualquer arquivo ou diretório de um caractere existente no diretório atual. Então, provavelmente existe um arquivo / diretório chamado |
em seu diretório atual.
No meu sistema, a saída é diferente:
$ echo $abc?
_ 1
Se não houver um arquivo / diretório de um caractere, o ?
sai não expandido.
E, de fato, existem diretórios _
e 1
.