Por que não var = - funciona?

1

Ao escrever a pergunta:

Como o arquivo touch e cat denominado -

Eu estava tentando generalizar para um caso em que um arquivo chamado - fosse armazenado em uma variável.

Em zsh , tentei configurar uma variável para conter um único hífen:

% var=-
% echo $var

% var='-'
% echo $var

% var=\-
% echo $var

%

Por que isso não funciona?

Por que zsh é diferente de bash a esse respeito?

Como defino $var para - ?

    
por Tom Hale 08.09.2018 / 15:23

1 resposta

6

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:

por 08.09.2018 / 15:41

Tags