csh에서 문자열 평가

csh에서 문자열 평가

스크립트 1은 다음과 같습니다

#!/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"   

관련 정보