파일 분류 결과로 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에서 유래했으며 sh
1990년대 초 POSIX에 의해 표준화되었으므로 모든 POSIX 유사 셸에서 지원됩니다.
이 기능 자체는 1970년대 후반 Bourne Shell에서 시작되었지만 번거로운 `cmd`
구문을 사용했습니다. (t)csh
그런 다음 해당 구문도 사용하십시오. rc
/ 쉘 에서 es
구문은 `cmd
또는 입니다 `{more complex cmd}
. Fish에서는 (...)
최신 버전에서만 지원 되었습니다 $(cmd)
(큰따옴표 안에도 사용할 수 있음).
-like 셸 에서 sh
따옴표가 없고 목록 컨텍스트에서 $(cmd)
like는 $username
Split+glob(zsh에서만 분할)의 영향을 받으므로 매개변수로 전달하려면 따옴표로 묶어야 합니다.
자세한 내용은 $(<file)
다음을 참조하세요.Bash의 파일 읽기 명령 대체 이해