: 인용 부호로 둘러싸이지 않은 첫 번째 줄에 EOF
두면
foo=$(cat <<EOF
{"Comment":"Update DNSName.","Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"alex.","Type":"A","AliasTarget":{"HostedZoneId":"######","DNSName":"$bar","EvaluateTargetHealth":false}}}]}
EOF
)
는 여기-문서의 내용이 있으므로 $bar
당신이 넣어 어떤로 확장, 매개 변수 확장이 적용됩니다 거기에.
당신이 당신의 JSON에서 줄 바꿈을 가질 수 있다면, 당신이 좀 더 읽기 쉽게 만들 수 있습니다 심지어
foo=$(cat <<EOF
{
"Comment": "Update DNSName.",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "alex.",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "######",
"DNSName": "$bar",
"EvaluateTargetHealth": false
}
}
}
]
}
EOF
)
또는 (각 행의 첫 번째 들여 쓰기 탭이어야 함)
foo=$(cat <<-EOF
{
"Comment": "Update DNSName.",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "alex.",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "######",
"DNSName": "baz",
"EvaluateTargetHealth": false
}
}
}
]
}
EOF
)
및 그 인용이 포함 저장되는 방법을 표시한다 (즉 가정 bar=baz
) t 때문에
$ declare -p foo
declare -- foo="{
\"Comment\": \"Update DNSName.\",
\"Changes\": [
{
\"Action\": \"UPSERT\",
\"ResourceRecordSet\": {
\"Name\": \"alex.\",
\"Type\": \"A\",
\"AliasTarget\": {
\"HostedZoneId\": \"######\",
\"DNSName\": \"baz\",
\"EvaluateTargetHealth\": false
}
}
}
]
}"
foo='{"Comment":"Update DNSName.","Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"alex.","Type":"A","AliasTarget":{"HostedZoneId":"######","DNSName":"'"$bar"'","EvaluateTargetHealth":false}}}]}'
주의가 $bar
에 대한 인용 : 자신의 팽창은 당신이 당신의 JSON 그래서 대안 *
같은 포함 된 경우 직접 지정할 수, 문제로 실행되지만 $bar
주위에 인용에 대해주의 수, 메타 문자 쉘은
있어
"'"$bar"'"
^^^ ^^^
||| |||
||| ||literal double quote
||| |opening syntactical single quote
||| closing syntactical double quote
||opening syntactical double quote
|closing syntactical single quote
literal double quote
이것은 완벽하게 작동했습니다. 특히 바에 대한 인용문을 작성해 주셔서 감사합니다. – Alex