bash - jq:错误:TOKEN/0 未定义于,第 1 行:
问题描述
下面是 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:错误:TOKEN/0 未在第 1 行定义:
请帮忙。
解决方案
正如评论中指出的那样,可以使问题中 jq 的第二次调用起作用,但使用字符串插值通常被认为是最好避免的反模式。有许多替代方案,例如:
jq --arg token "$TOKEN" '.DatabaseName = $token' connector.json
还请注意,这两个更新都可以并且也许应该通过一次 jq 调用来执行,例如:
jq --arg token "$TOKEN" '.awsIAMCred = "hello" | .DatabaseName = $token' connector.json
推荐阅读
- .net-core - 调用 PerformanceCounterCategory.Exists() 在 docker 中抛出 System.PlatformNotSupportedException
- laravel-4 - 在我的本地服务器中设置后,Laravel 主页返回 404
- mysql - 如何通过sql在json中搜索[]
- powerbi - Power BI Embedded,仅通过查看权限生成嵌入令牌
- python - 用 BRISK 替换 SIFT 是 OpenCV 导致错误
- azure - 我们可以使用powershell实现天蓝色自动修复自定义操作,如果可能的话,最好的实践应该是什么?
- python - 在pytest中运行测试用例时如何显示断点而不是断言错误
- google-cloud-platform - GCE - 尽管部署了新版本,但仍调用旧版本的系统
- java - 我的开关案例中的空指针异常错误
- javascript - 当用户尚未在表单中提交数据时,如何防止显示 JavaScript 错误消息?