私は以下を試しています:
Len='echo $str | wc -c'
しかし、私は次のような結果を得ます。
'Echo $str|wc -c'
私は何が間違っていましたか?
答え1
コマンドの置換に引用符を使用するには、たとえば、単一引用符( ')の代わりに逆引用符( ` )を使用する必要があります。 :
Len=`echo $str | wc -c`
他の人が述べたように、構文を使用することもできますlen=$(...)
。
答え2
Len='echo $str | wc -c'
その後、変数はLen
文字列に設定されますecho $str | wc -c
(何も出力しません)。
シェルはコマンド置換ではないため、文字列のコマンドは実行しません。
コマンドの出力を取得するには、コマンド置換を使用します$(...)
。
Len=$( echo "$str" | wc -c )
この場合、以下を使用することもできます。
Len="${#str}"
これははるかに高速です。
パラメータ拡張は${#parameter}
値の長さまで拡張されますparameter
。
答え3
コマンドの出力をLen変数に割り当てる必要があります。
Len=$(echo "$str" | wc -c)