使用shell scipt读取json文件

使用shell scipt读取json文件,shell,Shell,我在文件中有以下数据- {"a" : "10", "b" : "20", "c" : "30"} 当我读取此变量中的值时- eval“\u value\=\”`cat hello1`\” echo$\u值等于{a:10,b:20,c:30} 我无法使用jq-r阅读此内容。有什么方法可以让我同时读取值中的双引号。不确定您的意思,但听起来您的文件hello1包含: {"a" : "10", "b" : "20", "c" : "30"} 你想把它放入一个名为\u value\u的变量中。如果是这

我在文件中有以下数据-

{"a" : "10", "b" : "20", "c" : "30"}
当我读取此变量中的值时-

eval“\u value\=\”`cat hello1`\”

echo$\u值
等于
{a:10,b:20,c:30}


我无法使用
jq-r
阅读此内容。有什么方法可以让我同时读取值中的双引号。

不确定您的意思,但听起来您的文件
hello1
包含:

{"a" : "10", "b" : "20", "c" : "30"}
你想把它放入一个名为
\u value\u
的变量中。如果是这样,您只需执行以下操作:

_value_=$(< hello1)

这是一个可移植的POSIX解决方案(无Bashims):

hello1文件的内容:

{"a" : "10", "b" : "20", "c" : "30"}
POSIX外壳代码:

_value_="$(cat "hello1")"
echo "$_value_"
输出:

{"a" : "10", "b" : "20", "c" : "30"}
我不确定您为什么要使用
eval
。这个命令是非常危险的,尤其是当您不能完全确定正在读取的文件的内容时。如果只需要解释变量(考虑到JSON输入,这似乎不太可能):请考虑使用:

\u value=“$(envsubst<“hello1”)”
回显“$\u值”

这是一个不同的问题。我想在读取文件时使用双引号。
{"a" : "10", "b" : "20", "c" : "30"}
_value_="$(envsubst < "hello1")"
echo "$_value_"