我不知道如何用 30 多年的命令打印字符串“-n” echo
。
我试过这些:
Michaels:Scripts$ echo -n
Michaels:Scripts$ echo "-n"
Michaels:Scripts$ echo -e "-n"
Michaels:Scripts$ echo -- -n
-- -n
Michaels:Script$ echo -- "-n"
-- -n
Michaels:Script$ echo "\-n"
\-n
Run Code Online (Sandbox Code Playgroud)
我使用 Mac OS X ML。我认为这种行为非常奇怪和出乎意料。
如果您不想使用,prinf
您有几个选项,至少根据这个 SO Q&A,标题为:echo “-n” will not print -n? .
这似乎是你最好的选择:
$ echo "x-n" | cut -c 2-
-n
Run Code Online (Sandbox Code Playgroud)
或者一些变化:
$ echo -- '-n'|cut -d" " -f2
-n
Run Code Online (Sandbox Code Playgroud)
printf
没有这个问题:
$ printf "%s\n" -n
-n
Run Code Online (Sandbox Code Playgroud)
为什么要使用echo
?使用printf
:
printf -- '-n\n'
Run Code Online (Sandbox Code Playgroud)
或者:
printf '%s\n' -n
Run Code Online (Sandbox Code Playgroud)
与echo
:
echo -n
Run Code Online (Sandbox Code Playgroud)
将以-n<LF>
符合 UNIX 的echo
.
bash
, dash
, GNU 或zsh
echo(在大多数系统上的默认配置中)可以通过以下方式实现:
echo -en '-n\n'
Run Code Online (Sandbox Code Playgroud)
或者(在基于 ASCII 的系统上):
echo -e '\055n'
Run Code Online (Sandbox Code Playgroud)
Zshecho
可以做到:
echo - -n
Run Code Online (Sandbox Code Playgroud)
或者(假设bsdecho
未启用该选项):
echo '\u002Dn'
Run Code Online (Sandbox Code Playgroud)
鱼的echo
:
echo -- -n
Run Code Online (Sandbox Code Playgroud)
Ksh 和 Zshprint
可以通过以下方式实现:
print - -n
Run Code Online (Sandbox Code Playgroud)
或者:
print -- -n
Run Code Online (Sandbox Code Playgroud)
bash
(但不是zsh
),假设posix
和xpg_echo
未同时启用:
echo -n -; echo n
Run Code Online (Sandbox Code Playgroud)
有趣的是,以 POSIX 方式单独输出-n
with是不可能的echo
(也就是说,或多或少,可移植到 Unices 和 Unix-likes 之间),因为如果第一个参数是-n
或任何参数包含反斜杠字符的行为是未指定的。