스크립트 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"