Tcsh

在 tcsh 中,如何在分配變數時保留 ‘{’ ‘}’?

  • May 21, 2022

我正在使用 shell 製作一個簡單的 shell 腳本tcsh。我分配了一個變數作為稍後使用的命令。但是單引號內的括號消失了。

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

結果顯示

test '10' '' ' 

為什麼會這樣?如果我單獨使用{}'',沒關係。

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

我認為這與 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' '{}' ' 

引用自:https://unix.stackexchange.com/questions/703390