jq를 사용하여 사용자 입력에서 JSON 개체를 구성하는 작은 bash 스크립트가 있습니다. 불행하게도 jq가 다중 단어 변수를 키 중 하나의 값으로 받아들이도록 설득할 수는 없습니다.
다음은 bash 프롬프트의 동일한 예입니다.
공백이 없으면 jq는 예상대로 작동합니다.
$> value="Input"
$> jq -n --arg value $value '{"key": ($value)}'
반품:
{
"key": "Input"
}
그러나 여러 단어 값이 깨집니다.
$> value="A multi word input"
$> jq -n --arg value $value '{"key": ($value)}'
반환 오류:
jq: error: multi/0 is not defined at <top-level>, line 1:
multi
jq: 1 compile error
jq가 $value의 공백으로 인해 질식하지 않도록 설득할 수 있는 마법은 무엇입니까?
답변1
인용하지 않은 내용은 $value
셸에 의해 토큰화됩니다. 대답은 간단히 인용하는 것입니다.
$ jq -n --arg value "$value" '{"key": ($value)}'
{
"key": "A multi word input"
}
당신은 또한 볼 수 있습니다