컬의 bash 스크립트 변수

컬의 bash 스크립트 변수

나는 여기서 간단한 것을 놓치고 있다고 생각하지만 그게 전부입니다.

이것은 명령줄에서 잘 작동하며 원하는 출력을 제공합니다.

curl -X GET \
     -H "X-Auth-Email: REDACTED" \
     -H "X-Auth-Key: REDACTED" \
     "https://api.cloudflare.com/client/v4/zones/aa5ac150d414359642d85f1aa434e5db/filters" | jq -r '.result[0] .id'

그러나 bash 스크립트에서 사용하려고 하면 전혀 출력이 나오지 않습니다.

FWRID="$(curl -X GET \
     -H "X-Auth-Email: REDACTED" \
     -H "X-Auth-Key: REDACTED" \
     "https://api.cloudflare.com/client/v4/zones/aa5ac150d414359642d85f1aa434e5db/filters")" | jq -r '.result[0] .id'

echo "$FWRID"

어떤 도움이라도 대단히 감사하겠습니다.

답변1

두 번째 명령에서는 에 파이프하기 전에 명령 대체를 종료합니다 jq. 이 호출은 jq원하는 값을 구문 분석하므로 명령 대체의 일부가 되어야 합니다.

FWRID=$(
    curl -X GET \
        -H 'X-Auth-Email: REDACTED' \
        -H 'X-Auth-Key: REDACTED'   \
        'https://api.cloudflare.com/client/v4/zones/aaxxx/filters' |
    jq -r '.result[0] .id'
)

원래 명령에서는 jq명령 대체 외부에서 jq변수 할당의 출력을 읽고 FWID그로부터 일부 결과가 생성됩니다. 할당은 출력을 생성하지 않으므로 전혀 흥미로운 작업을 수행하지 않습니다.

또한 원래 명령의 할당은 파이프라인의 일부이므로 하위 셸에서 실행되므로 $FWID이후 호출에서는 값이 비어 있거나 최소한 변경되지 않습니다 echo.

관련 정보