여러 단어(공백으로 구분된) bash 변수에서 JSON 개체를 구성하는 방법은 무엇입니까?

여러 단어(공백으로 구분된) bash 변수에서 JSON 개체를 구성하는 방법은 무엇입니까?

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"
}

당신은 또한 볼 수 있습니다

관련 정보