다음 명령에서는 $domain_name
문자열 대신 변수를 사용해야 합니다.hyb.com
jq
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을 직접 생성하는 것보다 낫습니다. 예를 들어 삽입하는 데이터에 탭, 줄 바꿈 또는 큰따옴표가 포함된 경우 이 데이터는 다음을 사용하여 jq
JSON 문자열로 올바르게 인코딩됩니다 . --args
.
목록은 중괄호 확장을 사용하여 생성됩니다. bash
버전 4 이상을 사용한다고 가정하면 생성된 숫자는 {00..11}
0으로 올바르게 채워집니다.
domain_name
환경(내보낸) 변수일 필요는 없습니다 .