Shell 脚本 - CURL post 使用另一个 CURL 捕获的表单数据 html 参数中的文本
Shell script - CURL post form data with another CURL captured html text in parameters
我需要捕获一个 html 内容并将其作为表单数据传递给另一个 curl。
我的解决方案:
curl http://example.com/campaigns/create.php \
-F api_key=myKey \
-F subject="My Subject" \
-F list_ids=12345 \
-F html_text="'$(curl -s -L https://somedomain.com?feed=sports)'" &>/dev/null
注意:是的,我试过html_text="$(curl -s -L https://somedomain.com?feed=sports)"。但是服务器无法解析 isset($_POST['html_text']) 然后。
我的输出:
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
.....
</center> </body> </html>'
除了 html_text 用不必要的单引号 (') 括起来之外,上面的示例工作正常。有什么建议可以让我摆脱 html_text 周围的这个单引号吗?
你把单引号放在那里。不要那样做。
-F html_text="'$(curl ... -)'"
就 shell 而言,双引号将值收集到单个字符串中,文字单引号是该文字字符串的一部分。
固定码:
curl http://example.com/campaigns/create.php \
-F api_key=myKey \
-F subject="My Subject" \
-F list_ids=12345 \
-F html_text="$(curl -s -L https://somedomain.com?feed=sports)" >/dev/null 2>&1
另请注意 POSIX 兼容的重定向;我认为没有理由使用 Bash 特定的符号 &>
如果服务器无法处理这个值,可能它需要某种特定的格式或编码;但无法访问有关您的服务器的信息,我们无法帮助解决该部分的问题。
更新:
如果 HTML 以 <
字符开头,它将查找顶层 curl
就像您说的 -F<!DOCTYPE ...
,其中 [= 之后的文本14=] 应该是一个文件名。
您可以通过显式使用此构造来解决此问题:
curl -s -L https://somedomain.com?feed=sports |
curl http://example.com/campaigns/create.php \
-F api_key=myKey \
-F subject="My Subject" \
-F list_ids=12345 \
-F html_text="<-"
我需要捕获一个 html 内容并将其作为表单数据传递给另一个 curl。
我的解决方案:
curl http://example.com/campaigns/create.php \
-F api_key=myKey \
-F subject="My Subject" \
-F list_ids=12345 \
-F html_text="'$(curl -s -L https://somedomain.com?feed=sports)'" &>/dev/null
注意:是的,我试过html_text="$(curl -s -L https://somedomain.com?feed=sports)"。但是服务器无法解析 isset($_POST['html_text']) 然后。
我的输出:
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
.....
</center> </body> </html>'
除了 html_text 用不必要的单引号 (') 括起来之外,上面的示例工作正常。有什么建议可以让我摆脱 html_text 周围的这个单引号吗?
你把单引号放在那里。不要那样做。
-F html_text="'$(curl ... -)'"
就 shell 而言,双引号将值收集到单个字符串中,文字单引号是该文字字符串的一部分。
固定码:
curl http://example.com/campaigns/create.php \
-F api_key=myKey \
-F subject="My Subject" \
-F list_ids=12345 \
-F html_text="$(curl -s -L https://somedomain.com?feed=sports)" >/dev/null 2>&1
另请注意 POSIX 兼容的重定向;我认为没有理由使用 Bash 特定的符号 &>
如果服务器无法处理这个值,可能它需要某种特定的格式或编码;但无法访问有关您的服务器的信息,我们无法帮助解决该部分的问题。
更新:
如果 HTML 以 <
字符开头,它将查找顶层 curl
就像您说的 -F<!DOCTYPE ...
,其中 [= 之后的文本14=] 应该是一个文件名。
您可以通过显式使用此构造来解决此问题:
curl -s -L https://somedomain.com?feed=sports |
curl http://example.com/campaigns/create.php \
-F api_key=myKey \
-F subject="My Subject" \
-F list_ids=12345 \
-F html_text="<-"