如何在 zsh 中回显裸连字符 (`-`)?
How to echo bare hypen (`-`) in zsh?
我正在寻找一种方法来解决 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 - "-"
。第一个破折号终止选项处理,因此打印以下文本。
有关更多上下文,请参阅这个出色的答案:
改用printf
。 (这通常是关于 any 使用 echo
的好建议。)
my_f () {
printf '%s\n' "${(s.b.)1}"
}
我正在寻找一种方法来解决 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 - "-"
。第一个破折号终止选项处理,因此打印以下文本。
有关更多上下文,请参阅这个出色的答案:
改用printf
。 (这通常是关于 any 使用 echo
的好建议。)
my_f () {
printf '%s\n' "${(s.b.)1}"
}