実行中
echo abcd | wc -c
戻ります5。
ただし、単語のabcd長さはわずか4文字です。
されたecho単語の後にいくつかの特殊文字を印刷しますかabcd?
そして、それをecho印刷しないようにできますか?
wc -c何文字かは教えてくれないことに注意してください。それはそれが何バイトかを伝えるだけです。
実行中
echo abcd | wc -c
戻ります5。
ただし、単語のabcd長さはわずか4文字です。
されたecho単語の後にいくつかの特殊文字を印刷しますかabcd?
そして、それをecho印刷しないようにできますか?
wc -c何文字かは教えてくれないことに注意してください。それはそれが何バイトかを伝えるだけです。
回答:
echo\n行末に改行()を出力します
echo abcd | xxd
0000000: 6162 6364 0a abcd.
一部のecho実装では、次を使用できます-n。
-n末尾の改行を出力しません
およびテスト:
echo -n abcd | wc -c
4
他のいくつかでは、\cエスケープシーケンスが必要です。
\c:<newline>出力の最後の引数に続くものを抑制します。'\c'引数に続くすべての文字は無視されます。
echo -e 'abcd\c' | wc -c
4
移植可能printf:
printf %s abcd | wc -c
4
(wc -c文字ではなくバイトをカウントすることに注意してください(ただし、abcdそれらは一般に同等です。wc -m文字をカウントするために使用します)。
echo実装(少なくともすべてのUnix準拠のもの)では、echo 'abcd\c'出力abcdのみであることに注意してください。echo -e 'abcd\c'Unix準拠のecho実装では、が出力されます-e abcd。
オプションechoなしで実行すると-n、引数の後に改行文字が書き込まれます。そうでない場合、を入力するecho fooと、次のシェルプロンプトがの右側に表示されますfoo。だから、 wc改行をカウントしています。
echoそれを印刷しないようにするにはどうすればよいですか?
echo -n abcd | wc -c
printfより優れているのechoですか?