Total Articles 442
back quotes의 사용은 어떠한 mel 명령어를 앞 뒤로 둘러쌍아서 변수에 할당할 경우에 사용합니다. 아래의 예처럼,
string $test[]=`ls -sl`;
위의 예제의 경우, ls -sl을 실행시켜 그 결과값을 문자열 배열 변수 $test에 할당하게 됩니다.
그러나, 아래의 2가지 경우는 잘 이해가 가지 않네요.
a)
if(`size $word`)
{
print ("Not empty.\n");
}
b)
if(`sphere -q -radius "mySphere"`==5)
{
print ("This sphere has a radius of 5!");
}
자세한 설명 부탁드립니다. ??
아참, 한 가지 더..
help file을 보니,
if(size($word))
{
print ("Not empty.\n");
}
의 경우는 expression에 imperative syntax를 사용하면, 구문 에러가 발생한다고 되어 있는 데, 위의 경우, expression이 아니라, script editor에서도 에러가 발생하네요. 그리고, imperative syntax가 무엇인가요????

back quote는 정확히 말하자면, 어떤 MEL명령의 실행 결과를 얻고자 할 때 사용되는 겁니다.
쉽게 생각하자면, 그 결과값이 담긴 임시변수(한번 밖에 사용할 수 없는)라고 생각하시면 될까요?
그러니까,
string $test[]=`ls -sl`;
처럼 ls -sl 명령의 결과를 string $test[] 변수에 저장할 수 있게되지요.
a)의 경우는 $word라는 변수에 담긴 문자열의 크기를 알아내는 size 명령의 수행결과를 뜻하게 되니까,
그값에 0만 아니라면 if문에 의해서 참이라고 판단이되는 거구요
b)의 경우는 mySphere라는 이름의 sphere의 반지름을 알아내서 그 값이 5인지 비교하는 것이지요.
for ($sel in `ls -sl`) delete $sel;
그래서, 이런 식으로 사용할 수도 있습니다.
expression에 imperative syntax를 사용하면 구문에러가 난다고 할 때의 expression은 마야에서 말하는 expression이 아니라
if 문 뒤에 나오는 구문 같은 것들을 가리키는 좀 더 넓은 의미의 expression(수식이라고 부르는게 나을까요?)입니다. 여기에서는 size($word)같은 식의 명령을 바로 쓸 수 없다는 이야기지요. 명령자체는 수식이 될 수 없으니까요. 하지만 ``로 감싸서 그 결과값을 사용한다면 그것은 곧 수식이라고 볼 수 있겠죠.