我需要设置或访问多个cURL变量,以便稍后在脚本中访问它们。例如:
curl -s --write-out "%{http_code} | %{local_ip} | %{time_total}" "http://endpoint.com/payload"
现在我如何访问http_code或local_ip来执行将其添加到bash数组等操作?唯一的选择是将它们从响应中剔除吗?
答案 0 :(得分:2)
您可以将curl命令传递给读取命令:
curl -s --write-out "write-out: %{http_code} | %{local_ip} | %{time_total}\n" "http://yahoo.com" | \
sed -n '/^write-out:/ s///p' | \
while IFS='|' read http_code local_ip time_total;
do
printf "http_code: %s\nlocal_ip: %s\ntotal_time: %s\n" $http_code $local_ip $time_total;
# or in an array
curlvars=($http_code $local_ip $time_total)
for data in "${curlvars[@]}"
do
printf "%s | " $data
done
done
我在写出字符串中添加了\n
以允许将其作为一行进行处理。
sed命令从curl输出中提取写出行。
在read命令中,您可以定义分隔符并将所有已解析的字符串分配给变量。