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' '{}' '