走っている間
echo abcd | wc -c
それが返されます5
。
しかし、単語のabcd
長さは4文字にすぎません。
?echo
単語の後に特殊文字を印刷してください。abcd
echo
印刷されないようにできますか?
答え1
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
文字数を計算するために使用されます)。
答え2
echo
このオプションなしで実行すると、引数の-n
後に改行文字が作成されます。そうでないと入力すると、echo foo
次のシェルプロンプトが右側に表示されますfoo
。wc
改行文字を計算する場合も同様です。
echo
印刷しないようにするにはどうすればよいですか?
echo -n abcd | wc -c
答え3
基本echo
的に改行文字(\n
)文字列の後に(abcd
同じ行ではなく次の行にシェルプロンプトが表示されます)
-n
末尾の改行を無効にするパラメータを追加してみることができますecho
。
echo -n abcd | wc -c
4