avaliando uma string em csh

avaliando uma string em csh

script1 é o seguinte

#!/bin/csh
echo $*
$*

Então executo o seguinte na linha de comando:

>script1 setenv VAR "/user/path" \; ls

Ele fornece saída como:

setenv VAR /user/path ; ls
setenv: Too many arguments.

Alguma idéia para consertar isso?

Responder1

Eu realmente não entendo por que você iria querer isso, mas seu problema é que você está tentando executar uma variável em vez de avaliá-la. Em vez disso, tente isto:

#!/bin/csh
echo "$*"
eval "$*"

Então

script1 setenv VAR "/user/path" \; ls

Não sei, cshmas o problema parece estar relacionado a ter dois comandos como variável. Isso funciona conforme o esperado:

setenv aa "ls"
"$aa"   

Mas isso falha e precisa de eval:

setenv aa "ls; echo foo"
"$aa"   

informação relacionada