CURL 출력을 파일 및 bash 함수 매개변수로 리디렉션하는 방법

CURL 출력을 파일 및 bash 함수 매개변수로 리디렉션하는 방법

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

관련 정보