In epistula a Peter Ross, die horaque Thu, Oct 14, 2004 at 05:10:04PM +1000:
> Hi Leute,
>
> ist vielleicht eine lustige Knobelaufgabe - ich sitze eine halbe Stunde
> dran und mein Gehirn verknotet sich immer mehr.
Also ich hab fünf Minuten gebraucht, d.h. ich hatte entweder Glück
oder mein Hirn hat bereits diverse Knoten. Ich tippe auf letzteres
und sollte eine CT machen lassen ;-).
>
> Ich moechte via ssh remote ein Shellskript sourcen, welches ein
> temporeares File ist, dessen Filename ich lokal in einer Variable habe,
Ich frag jetzt besser nicht, warum ...
>
> wissen, wie eine Variable nach Ausfuehrung dieses Skripts heisst und
>
> das in einer lokalen Variable speichern.
> Etwa:
>
> lokale_variable=`ssh remotehost ". $lokal_gespeicherter_filename; echo
> $remote_variable"`
local_variable=`ssh remote_host ". $lokal_gespeicherter_filename; echo \\$remote_variable'
Erklärung (Vorsicht, ein wenig länger):
Der Doppelbackslash (\\) sorgt dafür, daß auf der lokalen Seite durch
normale Shell-Expansion auf der Kommandozeile nur noch ein Backslash stehen
bleibt.
Das "\$" stirbt dann durch die Backticks eines natürlichen Todes, wird
zu "$" und geht dann auch so über den Äther:
debug1: Sending command: . /tmp/test.sh; echo $remote_variable
Alternativ:
local_variable=`ssh -v remote_host ". $lokal_gespeicherter_filename; eval echo '$'remote_variable"`
Warum und wie das geht, sei dem Leser überlassen ;-). Die vorgehensweise
ist übrigens relativ einfach: Man überzeugt die Shell dazu, daß sie
das, was man will, von der Kommandozeile aus über den Äther schickt. Dann
fügt man erst die Backticks hinzu und quotet die entsprechenden
Problemstellen.
Gruß,
Peter
-- Geistreich sein heißt, sich leicht verständlich zu machen, ohne deutlich zu werden. -- Jean Anouilh To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Thu 14 Oct 2004 - 11:29:00 CEST