无法将参数作为 Bash 脚本传递给 Curl 命令

Can not pass parameter into Curl Command as Bash Script

相同的 curl 命令不适用于 bash 脚本。 谁能请

控制台尝试(成功一次):

curl -ki \
  --cookie cookie-jar.txt \
  --header 'Content-Type: text/xml' \
  --request POST https://testserver:1234/v1/secondarylogin \
  --data '<?xml version="1.0" encoding="UTF-8"?>
<p:secondaryloginrequest xmlns:p="http://www.ericsson.com/em/am/co/authentication/v1_0/">
    <credential>
        <secret>6673</secret>
        <type>otp</type>
    </credential>
    <channelinformation>COMVIVAAGENTAPP</channelinformation>
</p:secondaryloginrequest>' 

**HTTP/1.1 200 OK**
Date: Wed, 02 Mar 2022 10:52:01 GMT
Content-Type: text/xml;charset=utf-8
Date: Wed, 02 Mar 2022 10:52:02 GMT
Set-Cookie: sessionid=default0c07b834d30644e9b30a9bfced82e6f2
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Length: 0

一个非常简单的Bash脚本(失败的一个):

sh sectest.sh6673

#!/usr/bin/bash
curl -ki \
  --cookie cookie-jar.txt \
  --header 'Content-Type: text/xml' \
  --request POST https://ugtestpo:8446/v1/secondarylogin \
  --data '<?xml version="1.0" encoding="UTF-8"?>
<p:secondaryloginrequest xmlns:p="http://www.ericsson.com/em/am/co/authentication/v1_0/">
    <credential>
        <secret>""</secret>
        <type>otp</type>
    </credential>
    <channelinformation>COMVIVAAGENTAPP</channelinformation>
</p:secondaryloginrequest>'

HTTP/1.1 401 Unauthorized
Date: Wed, 02 Mar 2022 10:47:53 GMT
Content-Type: text/xml;charset=utf-8
Content-Length: 188

我无法通过 paramatically 传递我的秘密值。

正在将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。

以下内容应该适合您使用允许 </code> 展开的适当引用:</p> <pre><code>curl -ki \ --cookie cookie-jar.txt \ --header 'Content-Type: text/xml' \ --request POST https://ugtestpo:8446/v1/secondarylogin \ --data '<?xml version="1.0" encoding="UTF-8"?> <p:secondaryloginrequest xmlns:p="http://www.ericsson.com/em/am/co/authentication/v1_0/"> <credential> <secret>'""'</secret> <type>otp</type> </credential> <channelinformation>COMVIVAAGENTAPP</channelinformation> </p:secondaryloginrequest>'

为了可读性,我将 xml 分配给一个变量:heredocs 有助于避免引用地狱。

#!/usr/bin/bash

payload=$(cat <<END_XML
<?xml version="1.0" encoding="UTF-8"?>
<p:secondaryloginrequest xmlns:p="http://www.ericsson.com/em/am/co/authentication/v1_0/">
    <credential>
        <secret></secret>
        <type>otp</type>
    </credential>
    <channelinformation>COMVIVAAGENTAPP</channelinformation>
</p:secondaryloginrequest>
END_XML
)

curl -ki \
  --cookie cookie-jar.txt \
  --header 'Content-Type: text/xml' \
  --request POST \
  --data "$payload" \
  https://ugtestpo:8446/v1/secondarylogin