使用shell scipt读取json文件

时间:2017-01-30 06:28:47

标签: shell

我在文件中有以下数据 -

{"a" : "10", "b" : "20", "c" : "30"}

当我读取此变量中的值时 -

eval "_value_=\"`cat hello1`\""

echo $_value_等于{a : 10, b : 20, c : 30}

我无法使用jq -r阅读此内容。有没有办法可以在 value 中读取双引号。

2 个答案:

答案 0 :(得分:0)

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

{"a" : "10", "b" : "20", "c" : "30"}

并且您希望将其转换为名为_value_的变量。如果是这种情况,您只需:

_value_=$(< hello1)

然后你可以这样做:

echo "$_value_"
{"a" : "10", "b" : "20", "c" : "30"}

答案 1 :(得分:0)

这是一个便携式POSIX解决方案(没有bashisms):

hello1文件的内容:

{"a" : "10", "b" : "20", "c" : "30"}

POSIX shell代码:

_value_="$(cat "hello1")"
echo "$_value_"

输出:

{"a" : "10", "b" : "20", "c" : "30"}

我不确定您为什么要使用eval。该命令非常危险,特别是如果您不完全确定您正在阅读的文件的内容。如果您只需要解释变量,请考虑使用GNU envsubst(考虑到您的JSON输入,这似乎不太可能):

_value_="$(envsubst < "hello1")"
echo "$_value_"