在 tcsh 中,如何在分配变量时保留 '{' '}' ?

在 tcsh 中,如何在分配变量时保留 '{' '}' ?

我正在使用tcshshell 制作一个简单的 shell 脚本。我分配了一个变量作为稍后使用的命令。但单引号内的括号消失了。

set aaa = "test '10' '{}' ' " ; echo $aaa   

结果显示

test '10' '' ' 

为什么会出现这种情况?如果我单独使用{}and''就可以了。

set aaa = "test '10' {} '' ' " ; echo $aaa
test '10' {} '' '

答案1

我认为这与 csh 在参数扩展后进行大括号扩展有关。它确实{}独自留下了,但它似乎{}从例如中删除了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' '{}' ' 

相关内容