转义引号在命令行上很好,但在分配给变量时不起作用

Escapes quotes fine on command line but doesn't work when assigned to variable

非常简单的问题,但我看不出是什么问题。在 ksh shell 中,转义搜索字符串中的引号在分配给变量时与在命令行中使用时的工作方式不同。我能找到的所有示例都使用命令行进行演示,因此无法找到一个非常基本的问题的匹配项。

两者都工作正常:

cat access_443_log.2020-01-09 | grep 'HTTP/1.1" 200 '

cat access_443_log.2020-01-09 | grep "HTTP/1.1\" 200 "

但是当其中一个被分配给变量 searchstring 时这样做

searchstring='HTTP/1.1" 200 ' or searchstring="HTTP/1.1\" 200 "

cat access_443_log.2020-01-09 | grep $searchstring

错误: grep: 0652-033 无法打开 200.

谢谢。

尝试为您的变量添加双引号,就像这样。

cat access_443_log.2020-01-09 | grep "$searchstring"