2012-03-16 2 views
1

私がしようとしているのは、echoの出力を取得し、次に文字列の比較を行うことです。 例:初心者のbash:文字列比較テストでエコーの出力を使用するにはどうすればよいですか?

if [ (echo "Some string") = "* string" ] 
then 
echo true 
else 
echo false 
fi 

何も動作:

var=echo "Some string" 

if [ var = "* string" ] 
then 
echo true 
else 
echo false 
fi 

ここで別の試みです。

+1

エコーの出力をキャプチャすることは一般的に無意味です。シェル文字列( "Some string")をエコーし​​て出力として書き出し、その出力をキャプチャしてシェル文字列に戻すことは、なぜ迷惑?つまり、 'var =" $(echo "Some string") "'の代わりに 'var ="を使うだけです。 –

答えて

0

試してみてください。

if [ `echo "Some string"` = "* string" ]; then 
(other commands) 
fi 

または代わりに、あなたもthenキーワードの前にセミコロンが必要になります

if [ $(echo "Some string") = "* string" ]; then 
(other commands) 
fi 

注意。

var=$(echo "Some string") 
if [ "$var" = "* string" ] 

か::

if [ "$(echo "Some string")" = "* string" ] 

注私は追加二重引用符

+0

"..." then "キーワードの前のセミコロン" - または改行。 –

3

あなたはコマンド置換を使用することができます。重要なのは、Bashが複数の単語に分割するためです。 [ Some string = "* string" ]は機能しません。このため、およびその他の関連するものについては、私はそれについてあまり厳密である、代わりに[ ][[ ]]を使用することをお勧めします:

if [[ $(echo "Some string") = "* string" ]] 

それは実際にあなたが望むように聞こえるけれども:

if [[ $(echo "Some string") == *" string" ]] 

行われますパターンマッチではなく、の文字列を正確にと比較してください。

関連する問題