CURL出力をファイルおよびbash関数パラメータにリダイレクトする方法

CURL出力をファイルおよびbash関数パラメータにリダイレクトする方法

$LOGカール出力を関数の2番目のパラメータに渡す方法json_extract

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

おすすめ記事