변수를 jq로 가져오기

변수를 jq로 가져오기

다음 명령에서는 $domain_name문자열 대신 변수를 사용해야 합니다.hyb.comjq

jq --argjson IDS '['"$(seq -s, -f'"car%02.0f_hyb.com"' 11)"']' '
  .mazda |= $IDS
' file.json

변수를 다음과 같이 설정할 때

export domain_name=_hyb.com

jq --argjson IDS '['"$(seq -s, -f'"car%02.0f$domain_name "' 11)"']' '
  .mazda |= $IDS
' file.json

그러면 내보낸 변수가 domain_name표시되지 않습니다 jq. 변수를 로 가져오는 방법에 대한 제안 사항이 있습니까 jq?

ベストアンサー1

$domain_name작은따옴표로 사용합니다. 이것이 쉘이 변수를 확장하지 않는 이유입니다.

하지만 이 경우에는 약간 다른 접근 방식을 권장합니다.

jq셸에서 원시 데이터를 가져오는 안전한 방법을 제공합니다.

jq '.mazda |= $ARGS.positional' file.json --args car{00..11}"$domain_name"

mazda그러면 목록에서 가져온 값을 사용하여 명령줄에 키가 삽입됩니다 . 값 --args목록은 --args명령줄 끝에 있어야 합니다. 필요한 경우 이러한 값은 JSON으로 인코딩됩니다 jq. 이는 일반적으로 외부 소스에서 제공될 수 있는 데이터에서 올바른 JSON을 직접 생성하는 것보다 낫습니다. 예를 들어 삽입하는 데이터에 탭, 줄 바꿈 또는 큰따옴표가 포함된 경우 이 데이터는 다음을 사용하여 jqJSON 문자열로 올바르게 인코딩됩니다 . --args.

목록은 중괄호 확장을 사용하여 생성됩니다. bash버전 4 이상을 사용한다고 가정하면 생성된 숫자는 {00..11}0으로 올바르게 채워집니다.

domain_name환경(내보낸) 변수일 필요는 없습니다 .

おすすめ記事