Bash 带“grep”的操作&引用;图案

Bash 带“grep”的操作&引用;图案,bash,Bash,我将通过不同的grep选项。我有下面的grep命令 result=$(echo "ABC DEF" | grep -q " ? ") 我知道,grep中的-q选项将使输出静音 “?”在grep命令中是否具有特定的含义,或者它将仅以字符串/字符的形式匹配“?”,没有标志来指示输入是正则表达式,它没有特殊的含义 测试: 使用-q标志进行测试: ~$ echo "hello ? world" | grep -q " ? "; echo $? 0 $?保存最后一个命令的退出状态grep是echo之前

我将通过不同的grep选项。我有下面的grep命令

result=$(echo "ABC DEF" | grep -q " ? ")
我知道,grep中的
-q
选项将使输出静音


“?”
grep
命令中是否具有特定的含义,或者它将仅以字符串/字符的形式匹配
“?”

没有标志来指示输入是正则表达式,它没有特殊的含义

测试:

使用
-q
标志进行测试:

~$ echo "hello ? world" | grep -q " ? "; echo $?
0
$?
保存最后一个命令的退出状态
grep
是echo之前的最后一个命令,匹配时返回0

如果尝试不匹配的字符串,您将得到:

~$ echo "hello world" | grep -q " ? "; echo $?
1

所以我的理解是正确的,它将只匹配第一个命令的管道输出中的“?”。谢谢。
grep-q
从不打印任何内容,因此
result
将始终是空字符串。事实上,您可能正在寻找
if echo“ABC DEF”| grep-q”;然后回声“匹配”;否则回声“不匹配”;fi
其中
if
流量控制命令的全部和唯一目的是运行命令管道并检查其退出状态。正确。您的作业没有提示您要回答的问题。@tripleee因此,如果在我将要执行的注释中发布的代码,它将给出“不匹配”作为输出。如果echo“ABC DEF”| grep-q“?”,则与此条件相同;是的,绝对是。这也很容易由您自己验证。
~$ echo "hello world" | grep -q " ? "; echo $?
1