2017-09-03 109 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 
...