10

一重引用符で囲まれているのに端末に書き込まれ$echo '-n'ないのはなぜですか?-n-n

4

6 に答える 6

13

引用符はシェルによって処理され、echoコマンドはプレーンを受け取るためです-n。エコーしたい場合-nは、たとえば次のことができますprintf '%s\n' -n

于 2010-04-15T12:36:14.057 に答える
4

以下はbashでのみ機能することがわかりました:

echo -n PRINT_THIS

したがって、最初に -n を付ける必要があります。

于 2013-01-23T10:14:53.217 に答える
2

printf可能な限り移植性の高いものを使用するようにしてください。

于 2010-04-15T14:05:17.270 に答える
2

あなたは試すことができます

echo -e '\055n'
于 2010-04-15T14:13:33.090 に答える
0

引用符は役に立ちません...うーん、説明が難しいからです。シェルは、「echo」コマンド自体が評価される前に引用符を削除するため、その時点では問題ありません。

これを試して:

echo - -n

これは機能しているとは文書化されていませんが (私は Ubuntu Linux を実行しています)、echo使用しているシェルに組み込まれていることはほぼ確実であるため、man ページはとにかく疑わしいものです。それは私にとってはうまくいきます。(私zshは本当に上品で洗練されているので走っています)。

編集bashビルトインeditはそのように動作しないようです。何を提案すればよいかわかりません。これ:

echo '' -n

「-n」の前にスペースが表示されますが、これは (何をしているかにもよりますが) OK かもしれません。

于 2010-04-15T12:34:40.377 に答える
0

そこにはまだありません:

echo -e 'a-n\b\b\b '
 -n

驚くべきことに、これは機能します:

echo -e '-n\b'
-n

そして、ここに私が説明できる解決策があります:

echo "foobar" | sed 's/.*/-n/'
-n
于 2010-04-16T04:21:32.897 に答える