оценка строки в 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"   

Связанный контент