tcshで変数を割り当てるときに '{' '}'を維持する方法は?

tcshで変数を割り当てるときに '{' '}'を維持する方法は?

tcshシェルを使用して単純なシェルスクリプトを作成しています。後で使用するコマンドとして変数を割り当てました。ただし、一重引用符の中の括弧は消えます。

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

結果を示す

test '10' '' ' 

なぜこれが起こるのですか?単独{}で使用しても''大丈夫です。

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

答え1

私はこれがパラメータ拡張の後に中括弧拡張を実行するcshに関連していると思います。実際には一人残りますが、例えば削除されたよう{}です。 (基本的に中括弧の間に空のリストがあるにもかかわらず、なぜ空の文字列に変換しないのかわかりません。{}foo{}{}{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' '{}' ' 

関連情報