我正在尝试扫描一个错误日志,查找包含503错误的行,所以我正在使用grep命令查找" 503
(引号+空格+503)。
这似乎很简单,但它不起作用:
grep '" 503 ' access.log
我遇到了以下错误:
bash: -c: 第0行: 意外的EOF,寻找匹配的`"' bash: -c: 第1行: 语法错误: 意外的文件结尾
我正在尝试扫描一个错误日志,查找包含503错误的行,所以我正在使用grep命令查找" 503
(引号+空格+503)。
这似乎很简单,但它不起作用:
grep '" 503 ' access.log
我遇到了以下错误:
bash: -c: 第0行: 意外的EOF,寻找匹配的`"' bash: -c: 第1行: 语法错误: 意外的文件结尾
看起来你是在某种语言中通过system()运行它,是吗?试试:
grep '\" 503 ' access.log
或:
grep "\" 503 " access.log
在终端中直接输入grep '" 503 ' access.log
即可。为了重现您的问题,我必须执行:
bash -c 'grep '\" 503 ' access.log'
这确实是语法错误。要使它正常工作,我需要:
bash -c 'grep "\" 503 " access.log'
您某种方式调用了bash -c ...
,可能是间接调用的。您需要找出是如何调用它以确定引号冲突的位置。
我相信现在它已经可以工作了(不确定,因为我没有得到结果,但也没有出现错误)。
原因是因为我正在通过以下ssh命令传递它,我相信SSH正在进行一些转义技巧:
ssh 123.123.123.123 grep '" 503 ' access.log
将其修改为以下内容似乎是修复的方法:
ssh 123.123.123.123 "grep '\" 503 ' access.log"
感谢大家的时间。
'" 503'
参数中剥离它们,然后将这些参数传递给ssh。然后ssh将收到的参数不变地传递到远程系统上的shell。该shell看到一个无法匹配的双引号字符。(可能还有一些细节,但这就是大体想法。) - Keith Thompson如果要调试类似这样的奇怪效果,请使用“set -x”来显示shell扩展和计算机对您的命令的看法。
.bashrc
中的一些错误指令导致的。