我正在寻找一种解决zsh echo的方法,该方法显然将只是一个连字符的字符串当作一个空字符串处理
echo -
# no output
echo "-"
# no output
echo '-'
# no output
[具体地说,我将一个字符串拆分成一个已知字符,然后使用这两个片段,而两个片段中的任何一个都可能是-
。喜欢
% my_f() {
my_arr=(${(s.b.)1})
echo $my_arr[1]
echo $my_arr[2]
}
% my_f "abc"
a
b
% my_f "-bc"
# I need to know -
b
% my_f "ab-"
a
# I need to know -
%
在我正在处理的特定事情上,我可以重新做事,以使潜在的-
不会被自己回显
my_arr=(${(qqqs.b.)1})
echo " ${(Q)my_arr[1]} "
echo " ${(Q)my_arr[2]} "
但是感觉很幸运,并且需要在此脚本周围撒很多qqq
和Q
。有没有更好的方法?
尝试echo - "-"
。第一个破折号终止选项处理,因此将打印以下文本。
请参见此出色的答案以获取更多上下文:https://stackoverflow.com/a/57656708/11776945