0

私はbashスクリプトを持っています

counter=0
for file in /home/ec2-user/Workspace/events_parts/*
do
        counter=$[counter + 1]
        event=$(cat $file | jq '.Event')
        echo $event
        if [ "$event" = "Time Exceeded" ]  || [ "$event" = "Load Time" ]; then
                echo "Coming Here"
                jq ".url = \"$(jq '.Message' $file | sed 's/.*proxy=\([^&]*\).*/\1/')\"" $file 
        else
                jq ".url = null"
        fi
done
~   

上記の bash スクリプトでEventは、JSON ファイルからフィールドを抽出し、2 つの可能な値をチェックしようとしています。if [ "$event" = "Time Exceeded" ] || [ "$event" = "Load Time" ];私が期待するように動作しません。比較している値が実際に存在することを確認しました。

4

1 に答える 1

2

の出力に先頭または末尾の不要な文字 (空白、改行など) があるかどうかを一度確認しますcat $file | jq '.Event'

cat $file | jq '.Event' | hexdump -C

アップデート:

交換

[ "$event" = "Time Exceeded" ]

[ "$event" = "Time Exceeded." ]

または置き換えます

[ "${event%.}" = "Time Exceeded" ]

または置き換えます

[[ "$event" =~ "Time Exceeded" ]]

部分文字列に一致します。${event%.}末尾の をトリミングし.ます。

于 2015-03-18T01:11:18.173 に答える