发布
社区首页 >问答首页 >用bash读取package.json文件的名称属性

用bash读取package.json文件的名称属性
EN

Stack Overflow用户
提问于 2017-11-11 05:36:38
回答 2查看 2K关注 0票数 1

我有这个:

代码语言:javascript
复制
str=`cat package.json`
prop="name"
my_val="$(node -e "console.log(JSON.parse(${str})[${prop}]);")"
echo "$my_val"

我想读取name文件的package.json属性。我认为这是近在咫尺,但我得到了一个JSON.parse错误:

代码语言:javascript
复制
SyntaxError: Unexpected token o in JSON at position 1
    at Object.parse (native)
    at [eval]:1:18
    at ContextifyScript.Script.runInThisContext (vm.js:25:33)
    at Object.runInThisContext (vm.js:97:38)

有人知道怎么修吗?

这样做是可行的:

代码语言:javascript
复制
prop="name"
my_val="$(node -e "console.log(require('./package.json')['$prop'])")"
echo "json val: '$my_val'"

但我想知道第一条路该怎么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-11 05:48:28

您正在获得一个JSON解析错误,因为您试图解析该字符串

代码语言:javascript
复制
"[object Object]"

您应该将bash脚本更改为:

代码语言:javascript
复制
node -e "console.log(JSON.parse(\`$str\`)['name'])"

注意反引号!您的字符串是多行字符串。

下面是一个运行(在我的项目目录中):

代码语言:javascript
复制
$ str=`cat package.json`
$ prop="name"
$ myval="$(node -e "console.log(JSON.parse(\`$str\`)['$prop'])")"
$ echo $myval
plainscript

增编

对于希望使用require而不是将文件的内容回显为字符串的OP,解决方案如下:

代码语言:javascript
复制
$ prop="name"
$ my_val="$(node -e "console.log(require('./package.json')['$prop'])")"
$ echo $my_val
plainscript

增编2

如果使用console.log,甚至可以关闭-p

代码语言:javascript
复制
$ prop="name"
$ my_val="$(node -pe "require('./package.json')['$prop']")"
$ echo $my_val
plainscript
票数 2
EN

Stack Overflow用户

发布于 2017-11-11 05:58:34

在linux系统中,有一个命令jq可以解析JSON文件

代码语言:javascript
复制
jq -r ".name" package.json
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47234740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档