wc -m
wc -c
私は/を使って文字列の文字数を数えるプログラムを書いています。文字数を数えますが、文字を追加します。これが私が現在持っているものです:
echo "enter a word"
read var1
echo $var1 | wc -c
単語を入力すると正常に実行されますが、たとえば「test」と入力すると 5 が出力されます。
なぜこのようなことをするのですか?解決策はありますか?
答え1
これは文字列をwc
。このecho
コマンドは、文字列の末尾に追加の文字であるtest
改行文字を挿入します\n
。
だから実際にはこれを計算していますtest\n
。-n
切り替えてこの動作を無効にできますecho
。
$ echo -n "test" | wc -c
4
別のコマンドを使用して文字列を生成します。例printf
:
$ printf "%s" "test" | wc -c
4
何が起こったのか見て
これを使用して、od
次のようにパイプに渡された実際の文字を確認できます。
$ echo "test" | od -c
0000000 t e s t \n
0000005
$ echo -n "test" | od -c
0000000 t e s t
0000004