シェルで読み取り入力を評価すると、常に1が返されます。

シェルで読み取り入力を評価すると、常に1が返されます。

ユーザーの入力承認を使用していますread。通常どおり計算を使用してwc -c変数に保存してみましたが、結果は常に1を返します。

以下は

#!/bin/bash 

echo -n "Enter your plaintext.> "
read text

count=$(echo $text | wc -w)
echo  $count

とにかく、変数が変数として保存されていない場合は、直接エコーするのが正しい結果です。

#!/bin/bash 

echo -n "Enter your plaintext.> "
read text

echo $text | wc -w

答え1

コードが動作します。

read text
count=$( echo "$text" | wc -w )

countテキストを入力すると2に設定されますhello world

コメントで文字計算について話しました。

count=$( echo "$text" | wc -c )

または

count=${#text}

あなたのためにそれを行います。ただし、このwcソリューションは最後の改行文字も計算し、パラメータ拡張方法よりも1文字大きい値を提供します。この方法は、上記のように拡張子を二重引用符で囲まない限り、文字列wcのスペースも圧縮します。$text

関連情報