aroman Asked: 2022-05-22 06:21:50 +0800 CST2022-05-22 06:21:50 +0800 CST 2022-05-22 06:21:50 +0800 CST 在 tcsh 中,如何在分配变量时保留 '{' '}'? 772 我正在使用 shell 制作一个简单的 shell 脚本tcsh。我分配了一个变量作为稍后使用的命令。但是单引号内的括号消失了。 set aaa = "test '10' '{}' ' " ; echo $aaa 结果显示 test '10' '' ' 为什么会这样?如果我单独使用{}和'',没关系。 set aaa = "test '10' {} '' ' " ; echo $aaa test '10' {} '' ' csh tcsh 1 个回答 Voted Best Answer ilkkachu 2022-05-22T10:19:59+08:002022-05-22T10:19:59+08:00 我认为这与 csh 在参数扩展后进行大括号扩展有关。它确实{}单独离开,但似乎{}从 eg中删除了foo{}。(我不知道为什么它不只是把它变成空字符串,即使大括号之间基本上有一个空列表。我认为在其他 shell 中{}或{foo}里面只有一个项目不会触发大括号扩展。) 引用扩展以避免这种情况。 > set a = 'foo{a,b}' > echo $a fooa foob > set b = '{}' > echo $b {} > set c = 'foo{}' > echo $c foo > echo "$c" foo{} 还有你的特殊情况: > set aaa = "test '10' '{}' ' " > echo "$aaa" test '10' '{}' '
我认为这与 csh 在参数扩展后进行大括号扩展有关。它确实
{}
单独离开,但似乎{}
从 eg中删除了foo{}
。(我不知道为什么它不只是把它变成空字符串,即使大括号之间基本上有一个空列表。我认为在其他 shell 中{}
或{foo}
里面只有一个项目不会触发大括号扩展。)引用扩展以避免这种情况。
还有你的特殊情况: