【发布时间】:2020-08-21 12:57:45
【问题描述】:
以下是 JSON 文件:
{
"awsIAMCred" : "replaceme",
"DatabaseName" : "replaceme"
}
下面是 bash 文件:
#!/bin/bash
echo BEGIN
date '+%Y-%m-%d %H:%M:%S'
TOKEN=mouse
touch connector.json
yum -y install moreutils
yum -y install nano
yum -y install nc
echo install of nano,nc and moreutils are done
chmod 660 connector.json
jq '.awsIAMCred = "hello"' connector.json|sponge connector.json
jq '.DatabaseName = $TOKEN' connector.json|sponge connector.json
cat connector.json
我遇到了这个异常:
jq: error: TOKEN/0 is not defined at , line 1:
请帮忙。
【问题讨论】:
-
你想做什么?你到底在做什么?你的目标是什么?
-
另外,在你显示的脚本中,
connector.json是空的,它会从哪里得到你显示的内容? -
尝试使用
jq ".DatabaseName = $TOKEN"而不是jq '.DatabaseName = $TOKEN'。单引号可防止 bash 进行变量扩展。 -
@GiorgiTsiklauri,我从 yaml 文件中获取令牌并将其传递给 bash 文件,在这里我希望它替换我的一个 json 值(DatabaseName 键)
-
@GiorgiTsiklauri,我上面提到的json是connector.json
标签: bash environment-variables jq