UNIXシェルスクリプトで2つの文字列を比較するには? [コピー]

UNIXシェルスクリプトで2つの文字列を比較するには? [コピー]

sedコマンドの出力である文字列を格納する変数があります。その文字列値が他の2つの文字列のうちの1つと一致する場合にのみ、一連のコマンドを実行したいと思います。

以下のコードを使用しました。

#! /bin/ksh
request=”Request”
fault=”Fault”
while read lines; do
    category=`echo $lines|sed -n -e 's/.*Summary: Value//p'| awk '{print $1}'`
    if [ ! -z "$category" ]
    then
        if($category = $request)
        then
            echo $category
        fi
     fi
done<content.txt

しかし、これによりエラーが発生しました。

sample.sh: Request: not found

Request変数カテゴリには値または値があります。Order

誰かがエラーや解決策を指摘できますか?

if 内の if が削除され、echo $category正しい文字列値が印刷されます。

ベストアンサー1

簡単な答えは、次の構文を使用できることです。

if [ "$category" = "$request" ]

間隔が重要です。参考までに、コマンドの置き換えと置換のために最も近い方法を使用する必要があります(参照第1条そしてPOSIXの記事):

category=`echo $lines|sed -n -e 's/.*Summary: value//p'| awk '{print $1}'`

だから

category=$(echo $lines|sed -n -e 's/.*Summary: value//p'| awk '{print $1}')

おすすめ記事