如何在 bash 脚本中指定文本

如何在 bash 脚本中指定文本

您好,我正在构建一个脚本,我需要匹配输出文件中的文本以匹配某些条件,但就好像它不查看它是否确实匹配:

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与给定字符串进行比较,您就知道它无论如何都包含字母。

最后我建议对要比较的字符串加双引号。

相关内容