jo-freaky
Goto Top

Leerzeichen in Shellscript - Problem

Hallo liebe NG,

ich versuche gerade ein Shell-Script für die Sicherung meiner VM zu schreiben und hänge bisher an folgendem Punkt:

Ich lese mit vmcd -l meine vorhandenen VMs aus übergebe dies an sed (um den Pfaden mit Leerzeichen ein \
voranzustellen und speichere dies in die Variable $machine.

Ausgabe der Variable $machine: /var/lib/vmware/Virtual\ Machines/WinXP-KServer/Windows\ XP\ Professional.vmx

Wenn ich nun jedoch versuche diese Variable im Aufruf $vmcmd $machine getstate zu übergeben, habe ich wieder das Problem mit den Leerzeichen. Das Setzen des Pfades in "" half leider auch nicht.

Ich bin mir sicher, dass es nur ein kleines Problem ist und ihr mir bestimmt weiterhelfen könnt.

Danke im Vorraus!

Codeauszug:
#User definable variables
BACKUPLOG="/var/backup/vm-hosts-backup.log"  
TARGET="/var/backup/"  

# hard variables
vmcmd=/usr/bin/vmware-cmd
ON="getstate() = on"  
OFF="getstate() = off"  
SUSPENDED="getstate() = suspended"  

machine=$(echo $($vmcmd -l) | sed -e 's/\ /\\\ /g')  
echo $machine

echo "Backing up server $machine" >> $BACKUPLOG  
echo $(date) >> $BACKUPLOG
state=$($vmcmd $machine getstate)
echo $state

Content-Key: 77084

Url: https://administrator.de/contentid/77084

Printed on: April 24, 2024 at 06:04 o'clock

Mitglied: 6890
6890 Feb 08, 2008 at 08:30:08 (UTC)
Goto Top
Morgen,

probier ma anstatt machine=$(echo $($vmcmd -l) | sed -e 's/\ /\\\ /g') nur machine=$($vmcmd -l | sed -e 's/\ /\\\ /g') bzw machine=$(echo -n $($vmcmd -l) | sed -e 's/\ /\\\ /g').

mfg godlike P
Member: jo-freaky
jo-freaky Feb 15, 2008 at 16:46:47 (UTC)
Goto Top
Hi,

ich dachte schon der Thread sei abzuschreiben.

Danke für deine Mühen, allerdings klappt es immer noch nicht.

Ich verstehe das nicht, wenn ich echo $machine mache, dann ist der Pfad gecastet und sieht so aus wie er aussehen sollte.

Übergebe ich allerdings $machine als Parameter habe ich wieder das selbe Problem

state=$($vmcmd $machine getstate)

Evtl. fällt dir ja noch was ein!

Thx in Advance