Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何使用带双引号和单引号的bash变量_Json_Linux_Bash_Shell_Parsing - Fatal编程技术网

Json 如何使用带双引号和单引号的bash变量

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“主机” 一切都很好

我正在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“主机”

一切都很好

“主机”:“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想要的。