Shell
-
Hallo,
ich komme nicht weiter, viell. habt Ihr ne Idee:
Ich habe eine Script, was auf gerufen wird und eine Datei übergeben bekommt:
./shutdown.sh /home/vmware/virtual\ machines/linux93_06.61.14_/SUSE\ Linux.vmx
Skript-Code:
#!/bin/sh echo $1 #Check ich ob der Übergebene Pfad okay ist export VAR1; VAR1=$(vmware-cmd $1 getstate) #VAR1 soll den Rückgabe wert des Kommandos haben s.o. #das Kommando lautet "vmware-cmd /home/vmware/virtual\ machines/linux93_06.61.14_/SUSE\ Linux.vmx getstat #wenn ich es als Kommando eingebe funzt es echo $VAR1 if [ $VAR1 -eq 'getstate() = on'] #wenn zurück kommt on then #fahre runter else #mach was anders fi
Wenn ich das Skript starte und mir $1 anzeigen lasse, kommt noch der Komplette Pfad.
Aber Dann kommt der Fehler:
linux-vmware-srv:/tools # ./shutdown.sh /home/vmware/virtual\ machines/linux93_06.61.14/SUSE\ Linux.vmx /home/vmware/virtual machines/linux93_pds_06.61.14_RAMONAT/SUSE Linux.vmx /usr/bin/vmware-cmd: Could not connect to VM /home/vmware/virtual (VMControl error -11: No such virtual machine: The config file /home/vmware/virtual is not registered. Please register the config file on the server. For example: vmware-cmd -s register "/home/vmware/virtual")
Der Schneidet an den Leerzeichen ab, aber WTF funktioniert es auf der Shell?
z.B.:linux-vmware-srv:/tools # vmware-cmd /home/vmware/virtual\ machines/linux93_06.61.14_/SUSE\ Linux.vmx getstate getstate() = on
Ich komm nicht weiter, habe bestimmt nur einen kleinen Denkfehler drin, aber nervt
Danke Euch schonmal
Gruss ALex
-
Im Script interpoliert die Shell die Variable an der Stelle ihres Auftauchens wieder (inkl. Leerstellen) und gibt die einzelnen Wörter sozusagen as-is an den Kontext weiter. Dein vmware bekommt also drei Parameter, nämlich den Pfad bis zur jeweiligen Leerstelle.
Versuche:
VAR1=$(vmware-cmd "$1" getstate)
BTW: Den Rückgabewert bekommst Du nach dem Programmablauf mit $?. Das was Du dort liest mit $() ist die Ausgabe des Programms.
-
Hallo LordJaxom
Danke,Danke,Danke ... das mit dem Interpolieren war mir klar, aber der hat es ja zerrissen. Ich habe alles Ausprobiert blos nicht das "$1"
also die Anführungsstriche... das war mein Bug, der Rückgabewert steht richtig in VAR1 drin ...jetzt kann ich weiter auswerten ...
Danke Dir
Gruss ALex