如何将 CURL 输出重定向到文件并作为 bash 函数参数

如何将 CURL 输出重定向到文件并作为 bash 函数参数

如何将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”这样的变量会导致代码更具可读性和可理解性。尤其是当它可以让您将很长、复杂的单行文字拆分为多条较短、易于理解的行时。

相关内容