You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Shell命令从curl请求中提取Token并复用?

提取并复用Curl返回的Token(Bash脚本实现)

方法1:用jq处理JSON(推荐)

JSON格式的返回值用专门工具处理最稳妥,能避免正则匹配的各种意外问题。

  1. 先安装jq(大部分Linux发行版可通过包管理器安装):
    • Debian/Ubuntu:sudo apt install jq
    • CentOS/RHEL:sudo yum install jq
  2. 将返回的Token存入环境变量:
    TOKEN=$(curl -k 'https://server:port/session' -X POST -H 'Content-Type: application/json' -d '{"username":"admin","password":"password"}' | jq -r '.token')
    
    这里jq -r '.token'的作用是直接输出token字段的原始值(不带双引号)。
  3. 后续命令直接复用变量:
    curl https://server:port/ -k -X POST -H 'Content-Type: application/json' -H "X-Cookie:token=$TOKEN" -d ''
    
    注意要用双引号包裹X-Cookie的内容,这样Bash才会解析$TOKEN变量。

方法2:用sed提取(无jq时备选)

如果暂时没法装jq,且返回的JSON格式固定(比如token字段的位置、引号格式不会变),可以用sed正则匹配:

  1. 提取Token到变量:
    TOKEN=$(curl -k 'https://server:port/session' -X POST -H 'Content-Type: application/json' -d '{"username":"admin","password":"password"}' | sed -n 's/.*"token":"\([^"]*\)".*/\1/p')
    
    正则说明:"token":"\([^"]*\)"精准匹配token字段的键值对,\([^"]*\)捕获引号内的Token内容,最后用\1输出捕获结果。
  2. 后续复用变量的命令和方法1完全一致:
    curl https://server:port/ -k -X POST -H 'Content-Type: application/json' -H "X-Cookie:token=$TOKEN" -d ''
    

内容的提问来源于stack exchange,提问作者Aprilia Ramadhannia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:35:03