BASH -将CURL指令分割为多行

azpvetkf  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(329)

我有一个工作的curl命令,我想把它拆分出来,使它更容易阅读。
curl d "valuea=1234&valueb=4567&valuec=87979&submit=Set" -XPOST "http://$ipa/school.cgi" > /dev/null
我已经尝试了几种方法来做到这一点,但似乎没有工作。

curl -d "valuea=1234"\
     -d "valueb=4567"\
     -d "valuec=87979"\
     -d "submit=Set"\
 -XPOST "http://$ipa/school.cgi"

curl -d "valuea=1234\
         valueb=4567\
         valuec=87979\
         submit=Set"\
 -XPOST "http://$ipa/school.cgi"

有人能告诉我怎么做吗?
谢谢

11dmarpk

11dmarpk1#

第一种方法是正确的,我在一些环境中遇到了将命令分散到多行的问题,这些环境正在修剪空格,因此在反斜杠前添加一个空格是个好主意:

curl -d "valuea=1234" \
     -d "valueb=4567" \
     -d "valuec=87979" \
     -d "submit=Set" \
  -XPOST "http://$ipa/school.cgi"

最后尝试一个简单的服务,它会通知你什么是接收,像这样一个:

// echorequest.js
const http = require('http');

const hostname = '0.0.0.0';
const port = 3001;

const server = http.createServer((req, res) => {
  console.log(`\n${req.method} ${req.url}`);
  console.log(req.headers);

  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');

  let data = '';

  req.on('data', function(chunk) {
    data += chunk
  });

  req.on('end', function() {
    console.log('BODY: ' + data);
    res.end(data + "\n");
  });
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://localhost:${port}/`);
});

...由node echorequest.js执行(& change target of the command:(单位:-XPOST "localhost:3001"

vaqhlq81

vaqhlq812#

第二种方法也可以通过添加缺失的“&”来工作。
比如说
发布日期:

curl http://url -d \
"valuea=1234&\
valueb=4567&\
valuec=87979&\
submit=Set"

获得:

curl "http://url?valuea=1234&\
valueb=4567&\
valuec=87979&\
submit=Set"

如果您需要一个动态服务来测试您的请求,请尝试https://requestbin.fullcontact.com/

相关问题