linux - ksh 中的转义括号

标签 linux ksh

我正在尝试在 ksh 文件中准备 JSON。我面临这个问题 - 我认为这是因为我不能正确使用牙套。示例:

RESULT="[";
COUNTRY=mCountry
LANGUAGE=mLang

AppendParams()
{
   RESULT=$RESULT"{\"site:\"$COUNTRY\",\"lang\":\"$LANGUAGE\"}";
}
AppendParams

RESULT=$RESULT"]";

echo $RESULT;

输出是:

sh-4.3$ ksh main.ksh                                                                                                                                                                                  
["site:"mCountry"] ["lang":"mLang"]

代替

[{"site:"mCountry","lang":"mLang"}] 

有没有办法禁用大括号或转义大括号?请帮忙。

最佳答案

当你回显或打印一个值可能包含大括号的变量时,双引号变量名,如“${VARIABLE}”,以避免大括号扩展。您也可以使用单引号来避免必须转义每个双引号。尝试:

    AppendParams()
{
   RESULT=${RESULT}'{"site:"'${COUNTRY}'","lang":'${LANGUAGE}'"}'
}
AppendParams

RESULT=$RESULT"]"

echo "$RESULT"

关于linux - ksh 中的转义括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45355177/

相关文章:

batch-file - 将参数从命令提示符传递到远程 ubuntu 机器

bash - ksh 上的 pushd/popd?

linux - 在 ksh 中拆分字符串

linux - ENV_VAR=${sh_var} 在 sh 脚本中设置

linux - 程序到进程的转换

java - Mint 中的图标不起作用,但应用程序在直接调用时起作用 - Intellij IDEA

c++ - 当我写socket时return 0是什么意思?

shell - ksh - 检查字符串是否有模式

bash - 从shell脚本中的文件名中删除一级文件扩展名

linux - 同时 TCP 终止和后续 connect() : EADDRNOTAVAIL