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"