zsh - 如何将带有替换值的 miltiline json 字符串分配给变量

问题描述 投票:0回答:1

我有剧本:

#!/usr/bin/env sh

phone='+1234567890'
firstname='Donald'
lastname='Trump'
birthdate='1946-06-14'
json=$(cat <<EOF
{
  "firstname" : "$firstname",
  "lastname"  : "$lastname" ,
  "birthdate" : "$birthdate",
  "phone"     : "$phone"    ,
  "department": "d45a7caa-a56c-43c2-be33-7064064856be",
  "status"    : "candidate"
}
EOF)
curl --json "$json" 'https://usa.example.com/president/elect'

我在 zsh 交互式 shell 中运行。它工作完美。现在我将第一行更改为

#!/usr/bin/env zsh

并且失败了

parse error near `json=$(cat <<EOF'

如何将多行字符串值替换为 zsh 中的变量?

json zsh
1个回答
0
投票

)
的结束语
json=$()
必须位于单独的一行,而不是在
EOF
之后:


#!/usr/bin/env zsh

phone='+1234567890'
firstname='Donald'
lastname='Trump'
birthdate='1946-06-14'
json=$(cat <<EOF
{
  "firstname" : "$firstname",
  "lastname"  : "$lastname" ,
  "birthdate" : "$birthdate",
  "phone"     : "$phone"    ,
  "department": "d45a7caa-a56c-43c2-be33-7064064856be",
  "status"    : "candidate"
}
EOF
)

curl --json "$json" 'https://usa.example.com/president/elect'

请记住,手动生成复杂的 JSON 结构会带来问题。您介意使用像 这样的工具来正确生成 JSON。

© www.soinside.com 2019 - 2024. All rights reserved.