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