私はBashスクリプトに取り組んでおり、特定の変数に含まれる文字列の長さが私の条件の1つです。現在の文字列はW5u7TBTzF17GGFV8DBJHvgAAAAI
です。最初に、wc -c
を使用して文字列の長さをカウントしました。
$ VAR='W5u7TBTzF17GGFV8DBJHvgAAAAI'; echo "$VAR" | wc -c
28
しかし、私のスクリプト条件[[ ${#VAR} -eq 28 ]]
は決してパスしません。それから私はキャラクターを1つずつ数えることにしました。実際、文字列の長さは27文字であり、${#VAR}
の値も27です。
$ echo "${#VAR}"
27
だから私は疑問に思っています-この違いはどこから来たのですか?
echo
が機能する方法です。今やる
echo koko
あなたが得る
georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo koko
koko
しかし、echo -n koko
を実行すると、
georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo -n koko
kokogeorgek@georgek-HP-Pavilion-17-Notebook-PC:~$
したがって、wc
はnewline character
もキャプチャしています。つかいます
echo -n "${VAR}" | wc -c
望ましい結果を得るため。 echo
コマンドはnewline
文字を追加するため、それもカウントされます。これを削除して実際のカウントを取得するには、-n
オプションを使用します。