例如,对于curl
,我想使用--cookie-jar
选项将cookie保存到变量或数组中,以便稍后在脚本中使用。默认情况下,--cookie-jar
选项尝试将cookie保存到本地文件。我想做这样的事情来保持脚本的独立性:
$ curl --cookie-jar $cookies 'https://duckduckgo.com/'
然后:
$ curl --cookie $cookies 'https://duckduckgo.com/'
在Bash中有可能吗?
答案 0 :(得分:2)
指定-
为输出文件写入标准输出。可以像往常一样将输出分配给变量:var="$(command)"
。但是,这仍将包括该网页。要仅存储Cookie,您必须使用-o file
选项将网页输出到文件中。示例:
cookies="$(curl --cookie-jar - stackoverflow.com -o webpage.html)"
echo "$cookies"
我不确定是否可以在不使用任何文件的情况下可靠地将网页和cookie分配给bash中的独立变量。这是一些丑陋的方法:
# Netscape HTTP Cookie File
行进行拆分。curl
。在第一次运行中,仅存储cookie。在第二次运行中,仅存储网页。curl
两次效率低下。要使用--cookies
读取cookie,最好模拟文件而不是将cookie作为字符串参数传递。您可以再次将-
指定为文件并从stdin中读取,或使用bash的<()
语法:
curl --cookie - stackoverflow.com <<< "$cookies"
curl --cookie <(printf %s "$cookies") stackoverflow.com