2017-09-03 70 views
1

我正在为bash写json的个人解析器。所以,我需要制定一条线。例如,我的json文件的一部分。如何使用带有双引号和单引号的bash变量

{ 
    "host": "127.0.0.1", 
    "hhost": "127.0.0.2", 
} 

当然,试图cat json.txt | grep host后,我收到:

"host": "127.0.0.1", 
"hhost": "127.0.0.1", 

我发现,如何找到只host没有hhost。我用

cat json.txt | grep '"host"'

一切都很好

"host": "127.0.0.1",

但我想在bash脚本中使用它:

#!/bin/bash 

#in a future, i want to read variable var from reading from console 
var=host 
search='"$var"' 
echo $search 

一个结果,我有:

"$var" 

我做错了什么?你能帮我建议吗?

+0

'搜索= $ var'然后'回声“$搜索”'可能是更接近你想要的东西,但它不是100%清楚你在做什么试图去做。 –

回答

1

,如果你把在bash单引号内的变量,我没有得到评估,你应该只使用:

search="$var" 

如果您希望变量用双引号括起来,只是逃避他们是这样的:

search="\"$var\"" 
+0

在第一个例子中,引号不是必需的,但第二个例子更像是OP想要的。 –

2

你可以使用jq,来分析这种情况的JSON文件,您需要先正确的有效的JSON

{ 
    "host": "127.0.0.1", 
    "hhost": "127.0.0.2" 
} 

然后,你可能只是这样做:

#/bin/sh 

HOST=$(jq '.host' data.json) 
echo $HOST 
...