Die letzte Zeile in diesem Skript funktioniert nicht wie erwartet:
%Vor%Hier wird das Echo 'eval cat $ myfile' ausgegeben. Wie kann ich 'eval cat afile.txt' drucken?
Nehmen wir die Dinge Schritt für Schritt:
Wenn Sie dies tun:
%Vor% Sie verhindern, dass die Shell $myfile
interpoliert. Also:
Wenn Sie die Interpolation zulassen möchten, können Sie doppelte Anführungszeichen verwenden:
%Vor% Das hemmt natürlich die Interpretation von $mycmd
, wenn Sie eval
ausführen.
Vergleiche das mit:
%Vor% Wahrscheinlich möchten Sie das $mycmd
in einer echo-Anweisung auswerten, wenn Sie es echotieren:
Sie können schreiben:
%Vor%oder etwas robuster:
%Vor% Das heißt, ich würde empfehlen, eval
möglichst zu vermeiden; Es ist sehr anfällig, da es viele komplizierte Schritte in der Bash-Befehlszeilenverarbeitung gibt und die Verwendung von eval
bedeutet normalerweise, dass Sie diese Schritte mehr als einmal ausführen. Es ist schwer zu verfolgen, was wirklich vor sich geht.
Tags und Links bash