如何将curl 输出作为函数$LOG
的第二个参数json_extract
。
json_extract
是一个需要两个参数的函数。 “key”和一个 json 字符串(CURL 的输出)
param=$(json_extract $jsonkey "$(curl -H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$data" $url >> $LOG )")
当我删除对 CURL 的重定向时,$LOG
输出将作为json_extract
.
答案1
听起来您想多次使用单个命令的输出。在这种情况下,您需要将其存储在变量中,然后在需要的地方使用该变量。例如尝试这样的事情:
response="$(curl -H "Accept: application/json" -H "Content-Type:application/json" \
-X POST --data "$data" "$url")"
echo "$response" >> "$LOG"
param=$(json_extract "$jsonkey" "$response")
另一种替代方法是使用tee
,它将命令的输出发送到文件以及标准输出。例如:
param=$(json_extract "$jsonkey" "$(curl -H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$data" "$url" | tee -a "$LOG" )")
就我个人而言,我发现使用像“$response”这样的变量会导致代码更具可读性和可理解性。尤其是当它可以让您将很长、复杂的单行文字拆分为多条较短、易于理解的行时。