Echo

如何用echo列印“-n”?

  • April 23, 2021

我不知道如何使用超過 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

我使用 Mac OS X ML。我認為這種行為非常奇怪和出乎意料。

如果你不想使用prinf你有幾個選項,至少根據這個 SO Q&A,標題為:echo “-n” will not print -n? .

這似乎是您最好的選擇:

$ echo "x-n" | cut -c 2-
-n

或一些變化:

$ echo -- '-n'|cut -d" " -f2
-n

列印

printf沒有這個問題:

$ printf "%s\n" -n
-n

為什麼要使用echo使用printf

printf -- '-n\n'

或者:

printf '%s\n' -n

echo

echo -n

將以-n<LF>符合 UNIX 的echo.

bash, dash, GNU 或zshecho (在大多數係統上的預設配置中)可以使用:

echo -en '-n\n'

或者(在基於 ASCII 的系統上):

echo -e '\055n'

Zshecho可以這樣做:

echo - -n

或者(假設bsdecho未啟用該選項):

echo '\u002Dn'

echo有:

echo -- -n

Ksh 和 Zshprint可以這樣做:

print - -n

或者:

print -- -n

bash(但不是zsh),假設posixxpg_echo都沒有啟用:

echo -n -; echo n

有趣的是,不可能以 POSIX 方式單獨輸出-nwith echo(也就是說,或多或少地,可跨 Unices 和 Unix-likes 移植),因為如果第一個參數是-n或任何參數包含反斜杠字元的行為是未指定的。

引用自:https://unix.stackexchange.com/questions/85846