こんにちは。特定の条件に一致するように出力ファイルのテキストを一致させる必要があるスクリプトを作成していますが、実際に一致することを確認していないようです。
echo $RESULT | grep -q '[a-z]&[A-Z]' && [ "$RESULT" = File Received ] && RETURN="$SERVICE $FINAL 0"
echo $RESULT | grep -q '[a-z]&[A-Z]' && [ "$RESULT" = File not received ] && RETURN="$SERVICE $FINAL 1"
echo $RESULT | grep -q '[a-z]&[A-Z]' || RETURN="$SERVICE $FINAL 10"
echo $RETURN
スクリプトを実行すると、最初の2つを渡し、10を出力として提供します。一致させる実際のテキストは「ファイルを受信しました」です。
答え1
あなたは何を期待できますか?
grep -q '[a-z]&[A-Z]'
マッチ?たとえば、x&Y
小文字、その後にアンパサンド、大文字が一致します。
[a-zA-Z]
aとzの間の単一の大文字、小文字、またはスペースを一致させることができます。ただし、これは状況によって異なるlocale
ため、より望ましい場合があります[[:alpha:]]
。
しかし、なぜこの小切手を受け取ったのかわかりません。$RESULT
与えられた文字列と比較すると、とにかく文字が含まれていることがわかります。
最後に、比較したい文字列の周りに二重引用符を入れることをお勧めします。