在写问题时:
我试图概括为一个命名文件-
存储在变量中的情况。
在 中zsh
,我尝试设置一个变量以包含单个连字符:
% var=-
% echo $var
% var='-'
% echo $var
% var=\-
% echo $var
%
Run Code Online (Sandbox Code Playgroud)
为什么这些不起作用?
为什么在这方面zsh
有所不同bash
?
如何设置$var
到-
?
同样,通常情况下,它不是变量中的实际值,而是变量如何。在echo
这种情况下。Zshecho
将单个破折号作为选项指示符的结尾,因此已将其删除。在线手册:
请注意,为了符合标准,双破折号不会终止选项处理;相反,它是直接打印的。但是,单个破折号确实会终止选项处理,因此第一个破折号(可能跟在选项之后)不会打印,但它后面的所有内容都作为参数打印。单破折号行为与其他壳不同。有关更便携的文本打印方式,请参阅printf,有关在 zsh 中打印文本的更可控方式,请参阅print。
所以我们有:
zsh% echo -
zsh% echo - -n
-n
zsh% var=-
zsh% printf "%s\n" "$var"
-
Run Code Online (Sandbox Code Playgroud)
也可以看看: