Ich möchte einen Befehl und ein Skript auf einem Remotecomputer mit einem Skript auf einem lokalen Computer ausführen. Ich weiß, dass es möglich ist, diese Art von Befehlen mit auszuführen ssh
, also habe ich gemacht:
#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'
Es funktioniert perfekt. Ich möchte, dass dieses Skript allgemeiner ist und Variablen verwendet. Jetzt ist es:
#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'
Und ich bekomme diesen Fehler: bash: ./: is a directory
Ich denke, die Remote-Maschine kennt diese Variablen nicht. Gibt es also eine Möglichkeit, sie zum Ziel zu exportieren ?
shell-script
ssh
remote
variable-substitution
Jean-Baptiste Martin
quelle
quelle
Antworten:
Ich weiß nicht , eine einfache Möglichkeit , Umgebungsvariablen zu Ziel exportieren, aber Ihr Skript könnte funktionieren , wenn Sie ersetzen
'
mit"
. Mit'
s wird der String'cd ${LOCATION}; ./${EXEC}'
wörtlich übergeben, aber mitDie Variablensubstitution erfolgt lokal.
Beachten Sie, dass die Werte von
LOCATION
undEXEC
an die Remote-Shell übergeben werden. Dies funktioniert also nur, wenn sie keine Shell-Sonderzeichen enthalten.quelle