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"