使用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_"