使用 bash 读取 package.json 文件的 name 属性

Ale*_*lls 1 bash shell json zsh node.js

我有这个:

str=`cat package.json`
prop="name"
my_val="$(node -e "console.log(JSON.parse(${str})[${prop}]);")"
echo "$my_val"
Run Code Online (Sandbox Code Playgroud)

我想读取namepackage.json 文件的属性。我认为这很接近,但我收到 JSON.parse 错误:

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)
Run Code Online (Sandbox Code Playgroud)

有人知道如何修复吗?

这有效:

prop="name"
my_val="$(node -e "console.log(require('./package.json')['$prop'])")"
echo "json val: '$my_val'"
Run Code Online (Sandbox Code Playgroud)

但我想知道如何以第一种方式做到这一点。

小智 6

在linux系统上有命令jq可以解析JSON文件

jq -r ".name" package.json
Run Code Online (Sandbox Code Playgroud)