shell 脚本curl的时候,变量未被正确替换

有问题的脚本:

updateRes=\$(curl --location --request PUT 'http://172.16.80.88:3100/api/application/devopsBuildVersion' \
      --header 'Authorization:  bGFtcF93ZWJfcHJvOmxhbXBfd2ViX3Byb19zZWNyZXQ=' \
      --header 'Content-Type:  application/json;charset=UTF-8' \
      --header 'Tenantid: 1' \
      --header "Token: \${token}" \
      --header 'Applicationid: 449535419210898432' \
      --data '{
          "id": "\$(params.build_version_id)",
          "jarWarFileName": "\${JAR_WAR_FILE_NAME}"
      }' -m 3 -s)

${JAR_WAR_FILE_NAME}会被当作字符串解析。

原因:在 Bash 中,单引号会阻止变量展开,这意味着任何包含在单引号中的变量都不会被解释为其值,而是被视为纯文本字符串。

正确代码:

updateRes=\$(curl --location --request PUT 'http://172.16.80.88:3100/api/application/devopsBuildVersion' \
      --header 'Authorization:  bGFtcF93ZWJfcHJvOmxhbXBfd2ViX3Byb19zZWNyZXQ=' \
      --header 'Content-Type:  application/json;charset=UTF-8' \
      --header 'Tenantid: 1' \
      --header "Token: \${token}" \
      --header 'Applicationid: 449535419210898432' \
      --data "{
          'id': '\$(params.build_version_id)',
          'jarWarFileName': '\${JAR_WAR_FILE_NAME}'
      }" -m 3 -s)

改成双引号即可。

基础不牢靠,辛辛苦苦排查了一上午。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要通过Shell脚本使用curl发送POST请求,可以使用以下方法: 1. 首先,你需要编写一个Shell脚本文件,并确保已经安装了curl工具。在脚本,你可以使用curl命令来发送HTTP请求。 2. 在脚本,你可以使用变量来存储请求的参数和请求的URL。可以使用read命令来获取用户输入的请求参数和URL。 3. 接下来,使用curl命令发送POST请求。你可以使用-X选项指定请求的方法为POST,并使用-d选项来指定请求的参数。例如,使用-d选项可以将请求参数作为字符串传递给curl命令。 4. 最后,你可以将curl的输出结果保存到日志文件。你可以使用重定向操作符(>>)将结果追加到日志文件。例如,echo命令可以将请求的类型、请求的参数、请求的URL和curl的输出结果写入日志文件。 以下是一个示例的Shell脚本代码,用于通过curl发送POST请求并将结果保存到日志文件: ```shell #!/bin/bash # 设置变量 req_param="" url="" log_dir="log" log_file="$log_dir/curl-$(date +%F).log" cmd="POST" # 获取用户输入的请求参数 echo "请输入请求参数request body:" read -e req_param # 获取用户输入的URL echo "请输入URL:" while true do read -e url if [ "$url" ] then break else echo "URL输入有误,请重新输入:" fi done # 发送POST请求 result=$(curl -X POST -d "$req_param" "$url") # 判断日志文件夹是否存在,不存在则创建 if [ ! -e "$log_dir" ] then mkdir -p "$log_dir" fi # 将请求类型、请求参数、请求URL和curl的输出结果写入日志文件 echo "$(date '+%F %H:%M:%S.%N') request-type:$cmd, request-body:$req_param request-url:$url , result:$result" >> "$log_file" # 输出结果 echo "$result" ``` 请注意,上述代码变量和命令都是根据你提供的引用内容编写的。你可以根据自己的需求进行修改和调整。 希望以上信息能够帮助到你。如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值