$LOG
カール出力を関数の2番目のパラメータに渡す方法json_extract
。
json_extract
2 つのパラメータを取る関数です。 "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"のような変数を使用すると、より読みやすく理解しやすいコードを得ることができると思います。特に、長くて複雑な単一テキスト行をより短く理解しやすい複数行に分けることができる場合にはさらにそうです。