一重引用符で囲まれているのに端末に書き込まれ$echo '-n'
ないのはなぜですか?-n
-n
6 に答える
引用符はシェルによって処理され、echo
コマンドはプレーンを受け取るためです-n
。エコーしたい場合-n
は、たとえば次のことができますprintf '%s\n' -n
以下はbashでのみ機能することがわかりました:
echo -n PRINT_THIS
したがって、最初に -n を付ける必要があります。
printf
可能な限り移植性の高いものを使用するようにしてください。
あなたは試すことができます
echo -e '\055n'
引用符は役に立ちません...うーん、説明が難しいからです。シェルは、「echo」コマンド自体が評価される前に引用符を削除するため、その時点では問題ありません。
これを試して:
echo - -n
これは機能しているとは文書化されていませんが (私は Ubuntu Linux を実行しています)、echo
使用しているシェルに組み込まれていることはほぼ確実であるため、man ページはとにかく疑わしいものです。それは私にとってはうまくいきます。(私zsh
は本当に上品で洗練されているので走っています)。
編集:bash
ビルトインedit
はそのように動作しないようです。何を提案すればよいかわかりません。これ:
echo '' -n
「-n」の前にスペースが表示されますが、これは (何をしているかにもよりますが) OK かもしれません。
そこにはまだありません:
echo -e 'a-n\b\b\b '
-n
驚くべきことに、これは機能します:
echo -e '-n\b'
-n
そして、ここに私が説明できる解決策があります:
echo "foobar" | sed 's/.*/-n/'
-n