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

如何编写Bash脚本解析cookie_jar文件提取Cookie键值对并修复执行报错

错误根因

  • Bash 变量名仅允许包含字母、数字、下划线,你使用包含~的字符串作为变量名,触发语法解析错误,这是你看到报错的核心原因。
  • Netscape HTTP Cookie 文件使用制表符作为字段分隔符,你将 awk 分隔符设为空格,会出现字段提取错位的问题。
  • 硬编码 Cookie 名称的写法可维护性差,Cookie 增减时需要同步修改脚本。

可用脚本

场景1:输出标准HTTP请求头格式Cookie(格式:name1=value1; name2=value2,最常用)

#!/bin/bash
# 提取cookie_jar中所有有效Cookie并拼接为请求头格式单行
cookie_str=$(awk '
BEGIN { FS="\t" }
/^#/ { next }
{ printf "%s=%s; ", $6, $7 }
' cookie_jar | sed 's/; $//')

echo "$cookie_str"

场景2:仅输出所有Cookie值,用空格分隔为单行

#!/bin/bash
awk '
BEGIN { FS="\t" }
/^#/ { next }
{ printf "%s ", $7 }
' cookie_jar | sed 's/ $//'

固定Cookie输出顺序版本

如果你必须和原脚本一样保持固定的Cookie输出顺序,可以用下面的写法,规避变量名非法问题:

#!/bin/bash
get_cookie_val() {
    awk -v key="$1" '
    BEGIN { FS="\t" }
    /^#/ { next }
    $6 == key { print $7; exit }
    ' cookie_jar
}

TS21xx72R2=$(get_cookie_val "TS21xx72R2")
BUILD0=$(get_cookie_val "BUILD0")
TS01dda1cb=$(get_cookie_val "TS01dda1cb")
BIGipCookie=$(get_cookie_val "BIGipS~NP_QA_QF~LQAS0_7011")
UserxxxId=$(get_cookie_val "UserxxxId")

echo "$TS21xx72R2 $UserxxxId $TS01dda1cb $BIGipCookie $BUILD0"

内容的提问来源于stack exchange,提问作者Mohd Rashid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:24:03