我正在为bash上的json写个人解析器。所以,我需要制作grep of line。例如,我的json文件的一部分。
{
"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 :(得分:2)
您可以使用jq来解析JSON文件,首先需要一个合适的有效json
{
"host": "127.0.0.1",
"hhost": "127.0.0.2"
}
然后你可以做类似的事情:
#/bin/sh
HOST=$(jq '.host' data.json)
echo $HOST
...
答案 1 :(得分:1)
如果你把一个变量放在bash中的单引号中,我就不会被评估,你应该只使用:
search="$var"
如果您希望变量用引号括起来,只需将它们转义为:
search="\"$var\""