Skript1 lautet wie folgt
#!/bin/csh
echo $*
$*
Dann führe ich Folgendes in der Befehlszeile aus:
>script1 setenv VAR "/user/path" \; ls
Die Ausgabe lautet:
setenv VAR /user/path ; ls
setenv: Too many arguments.
Irgendwelche Ideen, um das Problem zu beheben?
Antwort1
Ich verstehe nicht wirklich, warum Sie das wollen, aber Ihr Problem ist, dass Sie versuchen, eine Variable auszuführen, anstatt sie auszuwerten. Versuchen Sie stattdessen Folgendes:
#!/bin/csh
echo "$*"
eval "$*"
Dann
script1 setenv VAR "/user/path" \; ls
Ich weiß es nicht, csh
aber das Problem scheint damit zusammenzuhängen, dass zwei Befehle als Variable vorhanden sind. Das funktioniert wie erwartet:
setenv aa "ls"
"$aa"
Dies schlägt jedoch fehl und erfordert Folgendes eval
:
setenv aa "ls; echo foo"
"$aa"