if abfrage in shell skript (bash)

T

tux_rules

Eroberer
ich schreibe gerade ein skript für eine vmware (backup) ich weiß es gibt ein schon ein paar skripts da zu aber ich möchte es gerne selber machen alleine deshalb weil ich darin noch nicht so gut bin ich hab ein Array und eine abrafe in der abfrage schau ich ob ich alle images backupen soll oder nur einzelne. jetzt habe ich mir das so gedacht:

Code:
jop=4 (0 steht für alle images und die zahl für das spezielle image)
server=(da ist der pfad zu den images)
if (($job==0));then
        for i in 10
          do
               if   [ "$(vmware-cmd "$sata{$server[i]}" getstate)" == "getstate() = on" ]; then
                        echo "Server rennt:{$server[i]}"
               else
                        echo "Server rennt nicht:{$server[i]}"
               fi

          done
else
 for $job in $job
   do
     if   [ "$(vmware-cmd "$sata{$server[$job]}" getstate)" == "getstate() = on" ]; then
          echo "Server rennt:{$server["$job"]}"
     else
          echo "Server rennt nicht:{$server["$job"]}"
     fi
 done
fi
jetzt schreibt er mir: line 44: `$job': not a valid identifier
die zeile 44 ist aber das letzte fi
ich nehme an das er mir bei for $job in $job das problem macht.
ich habe mir gedacht das wenn ich eben die $job in $job mache das er mir nur das 4te image testet ob das image rennt.
oder ist das ein komplette schaß im wald was ich mir da überlegt habe?

lg Martin
 
Tippfehler??

Ich könnte mir vorstellen, das die Variable job nicht definiert ist, zumindest nicht wenn du das Programm 1:1 rauskopiert hast, denn dort definierst du eine Variable die jop heisst!!

lg Martin
 
ich muss abfragen ob die eingehängte platte vom richtigen server kommt (da muss ich die 1. drei IP block abfragen und ob er es an die richtige stelle gemountet hat
IP: 152.12.18
mount: /mnt/bkp
ich hab das so versucht aber leider schreit er da no such file or directory
code:
if [ "$(mount | grep //152.12.18)" ]; then
echo "ok"
fi
if ["$(mount | grep /mnt/bkp)"];then
# echo "/mnt/bkp ist gemountet"

else
echo "Platte ist nicht gemountet"
exit
fi
 
Zwei edukative Codeschnüppzäl:

Code:
for i in 10; do echo $i; done
for $i in 10; do echo $i; done
(Sind jetzt so die größten "Probleme", die ich beim Überfliegen des Posts sehen konnte.)
Außerdem würde ich "[ $job -eq 0 ]" dem "(($job == 0))" vorziehen. (Oder du "upgradest" alle deinen Vorherigen "[" zu "[[", dann wäre auch "[[ $job -eq 0 ]]" cool.)

Edit: Btw, wollte man über die Zahlen von 1 bis 10 iterieren, würde man das so machen:
Code:
for foo in 1 2 3 4 5 6 7 8 9 10; do echo $foo; done
for foo in {1..10}; do echo $foo; done   # same thing
 
ich muss abfragen ob die eingehängte platte vom richtigen server kommt (da muss ich die 1. drei IP block abfragen und ob er es an die richtige stelle gemountet hat
IP: 152.12.18
mount: /mnt/bkp
ich hab das so versucht aber leider schreit er da no such file or directory
code:
if [ "$(mount | grep //152.12.1" ]; then
echo "ok"
fi
if ["$(mount | grep /mnt/bkp)"];then
# echo "/mnt/bkp ist gemountet"

else
echo "Platte ist nicht gemountet"
exit
fi

Und du glaubst wirklich, das du auf dein hingerotztes Posting eine Antwort kriegst?

Obwohl, eine mögliche Antwort könnte sein:

Genau wie deine Postings sind auch deine Scripte hingerotzt und unleserlich.

Und deshalb funktionieren sie nicht.
 

Ähnliche Themen

Switche abfragen über Script

If-Abfrage kommt nicht positiv zurück, obwohl Kriterium erfüllt

NAS-Drive Mount in Bash-Script über crontab

Verschlüsseltes Backup-Script mit rsync

Shell Skript beschleunigen

Zurück
Oben