json - 使用 jq 检查 package.json 中是否存在“builds”部分
问题描述
我需要编写一个 shell 脚本来检查 package.json
NPM 项目文件中是否存在构建密钥。为此,我正在has
使用jq
; 但得到误报。如果不熟悉package.json
,我打算在 JSON 文件中查找键的存在,但键本身就是一个 JSON 对象(我的意思是嵌套的)。
下面是使用的脚本。
if [ $(./jq 'has(".scripts.build")' package.json) == "true" ];
then
echo "Has a build section"
else
echo "No build section"
fi
这个脚本总是命中else
代码的一部分。你能指出哪里出错了。
解决方案
最好将退出代码与-e
开关一起用于此类条件。此外,您正在尝试检查对象中是否存在键,并且它可能没有".scripts.build"
属性。它不会像你想象的那样检查那条路径。如果要使用,请先深入到对象has/1
。
if ./jq -e '.scripts | has("build")' package.json > /dev/null; then
echo "Has a build section"
else
echo "No build section"
fi
推荐阅读
- react-native - 我没有使用 React Native SafeAreaView 但似乎我一直在使用。我怎样才能做到这一点?
- ios - 无法从 Apple HealthKit 访问 Active Energy 的汇总日值
- discord.py - “except”函数不适用于 discord.py
- c++ - boost::extension.hpp 的原因没有为无序容器和其他一些容器定义 hash_value()
- python - FileNotFoundError: [Errno 2] No such file or directory Azure Python 错误
- amazon-web-services - 安装 Hudi 版本。AWS EMR 上的 0.6.0
- python - 使用 HoughCircles 和 FindContours 查找不同曝光的圆圈
- istio - 如何将 kube-secret 映射为 istio 键的值:“何时”条件下的 request.headers?
- c# - 无法在自定义 C# 异常中访问 StackTrace
- javascript - 此标头有什么问题:标头链接引用到不同的 url?