Json 如何使用带双引号和单引号的bash变量
我正在bash上为json编写个人解析器。所以,我需要对这条线进行grep。例如,我的json文件的一部分Json 如何使用带双引号和单引号的bash变量,json,linux,bash,shell,parsing,Json,Linux,Bash,Shell,Parsing,我正在bash上为json编写个人解析器。所以,我需要对这条线进行grep。例如,我的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", 我发现,如何只查找主机,而不查找hhost。我曾经 cat json.txt | grep“主机” 一切都很好
{
"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",
我发现,如何只查找主机
,而不查找hhost
。我曾经
cat json.txt | grep“主机”
一切都很好
“主机”:“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"
我做错了什么?你能给我一些建议吗 如果在bash中的单引号中放入变量,则不会对I求值,您应该使用:
search="$var"
如果希望变量用引号括起来,只需按如下方式对其进行转义:
search="\"$var\""
您可以使用,为了解析JSON文件,首先需要一个正确有效的JSON
{
"host": "127.0.0.1",
"hhost": "127.0.0.2"
}
然后你可以做一些类似的事情:
#/bin/sh
HOST=$(jq '.host' data.json)
echo $HOST
...
search=$var
然后echo“$search”
可能更接近您想要的内容,但并不100%清楚您想要做什么。第一个示例中不需要引号,但第二个示例可能更像OP想要的。