Auswerten eines Strings in CSH

Auswerten eines Strings in CSH

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, cshaber 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"   

verwandte Informationen