하나의 인수가 파일 분류 결과인 명령을 호출하십시오.

하나의 인수가 파일 분류 결과인 명령을 호출하십시오.

파일 분류 결과로 on 매개변수를 사용하여 명령을 호출하려면 어떻게 해야 합니까?


  npx aws-api-gateway-cli-test \
  --username $username \
  --password $password \
  --method $method \
  --body cat user.json | jq      # <--------- how am I supposed to write this?

위의 코드 조각으로 인해 구문 분석 오류가 발생했습니다.


또 다른 시도:

npx aws-api-gateway-cli-test \
      --username $username \
      --password $password \
      --method $method \
      --body ${cat user.json | jq}

오류: 대체 오류


참고할 수 있는 작품은 다음과 같습니다.

      npx aws-api-gateway-cli-test \
      --username $username \
      --password $password \
      --method $method \
      --body \{\"test\": \"123\"\}

답변1

npx aws-api-gateway-cli-test \
      --username "$username" \
      --password "$password" \
      --method "$method" \
      --body "$(cat user.json)"

ksh, zsh 또는 bash에서는 다음을 수행할 수도 있습니다.

npx aws-api-gateway-cli-test \
      --username "$username" \
      --password "$password" \
      --method "$method" \
      --body "$(<user.json)"

$(cmd...)cmd, 명령 대체라고 하며 출력을 확장하여 후행 줄 바꿈을 제거하고 bash모든 NUL 바이트의 경우. 이는 NUL을 포함하지 않아야 하는 JSON(외부 명령에 대한 매개변수는 NUL을 포함할 수 없음)에 적합하며 개행 문자를 포함하는 JSON 데이터의 후행 공백은 중요하지 않습니다.

명령 대체를 위한 특정 구문은 1980년대 초 ksh에서 유래했으며 sh1990년대 초 POSIX에 의해 표준화되었으므로 모든 POSIX 유사 셸에서 지원됩니다.

이 기능 자체는 1970년대 후반 Bourne Shell에서 시작되었지만 번거로운 `cmd`구문을 사용했습니다. (t)csh그런 다음 해당 구문도 사용하십시오. rc/ 쉘 에서 es구문은 `cmd또는 입니다 `{more complex cmd}. Fish에서는 (...)최신 버전에서만 지원 되었습니다 $(cmd)(큰따옴표 안에도 사용할 수 있음).

-like 셸 에서 sh따옴표가 없고 목록 컨텍스트에서 $(cmd)like는 $usernameSplit+glob(zsh에서만 분할)의 영향을 받으므로 매개변수로 전달하려면 따옴표로 묶어야 합니다.

자세한 내용은 $(<file)다음을 참조하세요.Bash의 파일 읽기 명령 대체 이해

관련 정보