カール出力を$LOG
に、またjson_extract
関数の2番目のパラメーターとして作成するにはどうすればよいですか。
json_extract
は、2つの引数を取る関数です。 「キー」とjson文字列(CURLの出力)
param=$(json_extract $jsonkey "$(curl -H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$data" $url >> $LOG )")
$LOG
へのリダイレクトを削除すると、CURL出力が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")
もう1つの方法は、tee
を使用することです。これは、コマンドの出力をファイルと標準出力に送信します。例えば:
param=$(json_extract "$jsonkey" "$(curl -H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$data" "$url" | tee -a "$LOG" )")
個人的には、 "$ response"のような変数を使用すると、コードが読みやすく、理解しやすくなることがわかりました。特に、非常に長くて複雑なワンライナーを、短くてわかりやすい複数のラインに分割できる場合に役立ちます。