2017-09-03 14 views
1

私はbashのjson用のパーソナルパーサーを作成しています。だから、私は行のgrepを作る必要があります。たとえば、私の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", 

私だけhosthhostなしを見つける方法を、見つけました。その結果

#!/bin/bash 

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

、私が持っている:私はすべてが

"host": "127.0.0.1",

良いですが、私はbashスクリプトでそれを使用したい

cat json.txt | grep '"host"'

を使用

"$var" 

どうしたの?私に助言してもらえますか?あなたはbashで、単一引用符内の変数を置けば、私は評価されません

+0

'検索= $ var'、その後'エコー「$検索は、」 'あなたが望むものにおそらく近いですが、それはあなたがしているものではない100%明らかですやろうとしている。 –

答えて

1

、あなただけ使用する必要があります。

search="$var" 

あなたは、変数を引用符で囲むことにしたい場合は、ちょうどこのようにそれらをエスケープ:

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

最初の例では引用符は必要ではありませんが、2番目の例はOPが望んでいたものともっと似ています。 –

2

あなたが適切な有効なJSONを最初

{ 
    "host": "127.0.0.1", 
    "hhost": "127.0.0.2" 
} 
が必要になります。このためのJSONファイルを解析するために、 jqを使用することができます

次に、あなただけのような何かができる:

#/bin/sh 

HOST=$(jq '.host' data.json) 
echo $HOST 
... 
関連する問題