如何在回音中加入引号?

问题描述 投票:0回答:1

我需要一些帮助,我正在尝试做这样的事情。

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
}
json linux shell ubuntu echo
1个回答
1
投票

不要使用 echocat 与here-document。

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

0
投票

使用反斜杠来放置特殊字符,如 \"\n 为下一行或 \t 为标签

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

投放将是

this is my quotes -> " <-

0
投票

试试这个

 <?php

  echo ('
         "server":"127.0.0.1",
         "server_port":80,
         "password":"randompassword",
         "timeout":60
       ');
  ?>

试试这个新的

SHELL

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

0
投票

你有两种方法。

  • 第一种,在其他回答中已经回答过了,就是使用其他引号(如果你已经使用了 ',然后用 "或反之亦然),但如果你使用了 ' 外部。
  • 第二种,是脱离引号,用转义符 \\ 字符来逃避shell的解释,如
  • 一些答复中评论了使用转义字符的方法。里面 引号,通常不会有好的结果(取决于所使用的shell,转义符在单引号内不起作用,甚至在双引号内也不起作用)。 最好的是退出引号,转义,再进入引号,如下图所示。
  • 使用的方法是 cat(1) 和内流重定向输入,有 << 是依赖于shell的(不是所有的shell都允许这样做,所以你必须要小心)
echo "{
    "\""server"\"":"\""$SERVER_HOST"\"",
    "\""server_port"\"":"\""$SERVER_PORT"\"",
    "\""password"\"":"\""$PASSWORD_CHOICE"\"",
    "\""timeout"\"":$TIMEOUT_CHOICE
}" >> /etc/ss/example.json

你只需要将每个 " 内的字符串成 "\"" 如果您使用双引号来引用您的字符串)。 同样的道理也适用于单引号(如果你使用了单引号来引用你的字符串),将每个 ' 变成 '\''.

© www.soinside.com 2019 - 2024. All rights reserved.