您好,我正在构建一个脚本,我需要匹配输出文件中的文本以匹配某些条件,但就好像它不查看它是否确实匹配:
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
当我运行脚本时,它会传递前两个并给出 10 作为输出。我想要匹配的实际文本是“文件已收到”
答案1
你能指望什么
grep -q '[a-z]&[A-Z]'
匹配?例如,它将匹配x&Y
:一个小写字符,后跟一个 & 符号和一个大写字符。
您的意思可能是[a-zA-Z]
匹配 a 和 z 之间的任何单个大写或小写字母或空格。但请注意,这将取决于locale
,因此可能更想要[[:alpha:]]
。
但我根本不知道你为什么会有这张支票。如果您仅将$RESULT
与给定字符串进行比较,您就知道它无论如何都包含字母。
最后我建议对要比较的字符串加双引号。