$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"와 같은 변수를 사용하면 더 읽기 쉽고 이해하기 쉬운 코드를 얻을 수 있다고 생각합니다. 특히 길고 복잡한 단일 텍스트 줄을 더 짧고 이해하기 쉬운 여러 줄로 나눌 수 있는 경우에는 더욱 그렇습니다.