csh에서 문자열 평가하기

csh에서 문자열 평가하기

script1은 다음과 같습니다

#!/bin/csh
echo $*
$*

그런 다음 명령줄에서 다음을 실행합니다.

>script1 setenv VAR "/user/path" \; ls

다음과 같이 출력됩니다.

setenv VAR /user/path ; ls
setenv: Too many arguments.

문제를 해결할 아이디어가 있나요?

답변1

왜 이것을 원하는지 정말로 이해하지 못하지만 문제는 변수를 평가하는 대신 변수를 실행하려고 한다는 것입니다. 대신 이것을 시도해 보세요:

#!/bin/csh
echo "$*"
eval "$*"

그 다음에

script1 setenv VAR "/user/path" \; ls

잘 모르겠지만 csh두 개의 명령을 변수로 사용하는 것과 관련된 문제인 것 같습니다. 이는 예상대로 작동합니다.

setenv aa "ls"
"$aa"   

그러나 이것은 실패하고 다음이 필요합니다 eval.

setenv aa "ls; echo foo"
"$aa"   

관련 정보