如何在echo中引用引号



我需要一些帮助。我正试着做一些类似的事情

echo "{
"server":"$SERVER_HOST",
"server_port":"$SERVER_PORT",
"password":"$PASSWORD_CHOICE",
"timeout":$TIMEOUT_CHOICE
}" >> /etc/ss/example.json

我需要像一样的输出

{
"server":"127.0.0.1",
"server_port":80,
"password":"randompassword",
"timeout":60
}

但是输出总是像

{
server:127.0.0.1,
server_port:80,
password:randompassword,
timeout:60
}

不要使用echo,而是将cat与here文档一起使用:

cat >> /etc/ss/example.json <<EOF
{
"server":"$SERVER_HOST",
"server_port":"$SERVER_PORT",
"password":"$PASSWORD_CHOICE",
"timeout":$TIMEOUT_CHOICE
}
EOF

使用反斜杠放置特殊字符,如"n用于下一行或t用于选项卡

echo "this is my quotes -> " <-"

输出将是

this is my quotes -> " <-

您有两种方法:

  • 在其他响应中已经回答的第一个问题是使用其他引号(如果您使用了',则使用",反之亦然(,但如果您在外部使用',则通常会失去解释shell变量的可能性
  • 第二个是去掉引号,并使用转义\字符来转义shell解释,如
  • 在一些响应中评论的方法,即在引号内使用转义符,通常不会产生好的结果(根据使用的shell,转义符在单引号内,甚至在双引号内都不起作用(。最好的方法是退出引号,转义,然后再次插入引号,如下所示
  • 使用cat(1)和使用<<重定向流中输入的方法依赖于shell(并非所有shell都允许这样做,因此您必须小心(
echo "{
"""server""":"""$SERVER_HOST""",
"""server_port""":"""$SERVER_PORT""",
"""password""":"""$PASSWORD_CHOICE""",
"""timeout""":$TIMEOUT_CHOICE
}" >> /etc/ss/example.json

您只需要将字符串中的每个"转换为"""(如果您使用双引号为字符串加引号(。这同样适用于单引号(如果您使用单引号对字符串进行引号引用(,将每个'转换为'''

相关内容

  • 没有找到相关文章

最新更新