Novamente, com frequência, não é o valor real da variável, mas sim a variável. O echo
neste caso. O echo
de Zsh toma o único traço como um indicador de fim de opções, por isso é removido. Manual on-line :
Note that for standards compliance a double dash does not terminate option processing; instead, it is printed directly. However, a single dash does terminate option processing, so the first dash, possibly following options, is not printed, but everything following it is printed as an argument. The single dash behaviour is different from other shells. For a more portable way of printing text, see printf, and for a more controllable way of printing text within zsh, see print.
Então nós temos:
zsh% echo -
zsh% echo - -n
-n
zsh% var=-
zsh% printf "%s\n" "$var"
-
Veja também: