我需要一些帮助,我正在尝试做这样的事情。
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-document。
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 -> " <-
试试这个
<?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
}"
你有两种方法。
'
,然后用 "
或反之亦然),但如果你使用了 '
外部。\\
字符来逃避shell的解释,如cat(1)
和内流重定向输入,有 <<
是依赖于shell的(不是所有的shell都允许这样做,所以你必须要小心)echo "{
"\""server"\"":"\""$SERVER_HOST"\"",
"\""server_port"\"":"\""$SERVER_PORT"\"",
"\""password"\"":"\""$PASSWORD_CHOICE"\"",
"\""timeout"\"":$TIMEOUT_CHOICE
}" >> /etc/ss/example.json
你只需要将每个 "
内的字符串成 "\""
如果您使用双引号来引用您的字符串)。 同样的道理也适用于单引号(如果你使用了单引号来引用你的字符串),将每个 '
变成 '\''
.