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

관련 정보