PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit shell-script



Soeren
31-08-2007, 22:09
Hallo,

erstmal eine kurze Vorstellung. Meinen Namen seht Ihr ja :p . Ich habe erst vor kurzem angefangen mich mit Scriptsprachen zu beschäftigen und bin nun promt auf ein (für mich) unlösbares Problem gestoßen.
In folgendem Script wird die Zeile in der "Quemu usw." steht beim ausführen einfach übergangen, soll heißen, Das festplattenimage wird nicht angelegt (Zeile 27). Hoffe einer von euch kann mir helfen. Ich danke!! Ach ja. Das script ist selbstverständlich noch nicht fertig. Ich stehe noch am Anfang. :rolleyes:


#!/bin/bash

# Skript-Name: vmxmaker.dat
# Hinweis: Diese Skript ist geschrieben für SUSE Linux. Verwendung auf eigene Gefahr. :-)

dir= pwd

message=$(cat info1.txt)

dialog --clear --msgbox "$message" 0 0

aktion=$(dialog --clear --menu "Bitte Aktion auswählen" 0 0 0 \
"Festplatte erstellen" "Erstellt eine virtuelle HDD für das emulierte OS" \
"VMX-Datei erstellen" "Erstellt die Stuerungsdatei" 3>&1 1>&2 2>&3)


case $? in
1) dialog --clear --msgbox "Und Tschüss" 0 0 ;;
0) case $aktion in
"Festplatte erstellen" ) dialog --clear --msgbox "Bitte stelle sicher, dass 'qemu' installiert ist" 0 0
name=$(dialog --inputbox "Bitte Name für virtuelle Festplatte eingeben z.B. 'winxp'" \
0 0 "" 3>&1 1>&2 2>&3)
size=$(dialog --clear --inputbox "Bitte Festplattengröße in Gigabyte eingeben z.B.'4'" 0 0 "4" \
3>&1 1>&2 2>&3)
mkdir $name
cd $name
qemu-img create -f vmdk $name{.vmdk} $size{G}
cd ..
dialog --clear --msgbox "Es wurde im Skriptordner ein neues Verzeichnis mit dem Namen '$name' angelegt. Darin befindet sich die virtuelle Festplatte. Jetzt bitte die VMX-Datei erstellen" 0 0
;;
"VMX-Datei erstellen" ) dialog --clear --msgbox "VMX-Datei erstellen" 0 0
dialog --clear --yesno "Bitte zuerst die virtuelle Fesplatte erstellen!!! Weiter mit 'ja' zurück mit 'nein'" 0 0
answer=$?
if [ answer = 0 ]
then
dialog --clear --msgbox "Weiter gehts" 0 0
else
exit 0
fi ;;
esac
esac

clear

exit 0

klaus_harrer
01-09-2007, 09:28
Hallo

Ich persönlich setze immer nach der ersten Zeile.

"#!/bin/bash"

set -x

Somit kann man nachvollziehen was genau das Script ausführt(debuggen).

Ich schätze das es an der Zeile:



if [ answer = 0 ]

solllte eher

if [ $answer -eq 0 ]

heißen.


Schau mal unter "man test" nach.

MfG
klaus_harrer

Soeren
01-09-2007, 13:08
Hallo Klaus,

an der Zeile lag es zwar nicht (da war aber auch ein Fehler, Danke ;)) aber dank deinem Tip mit Set -x konnte ich das problem schnell lösen. Danke!!
Aber wo wir gerade dabei sind. wie kann ich dem Script verständlich machen, nach dem Abarbeiten einer bestimmten Zeile, an eine vorhergehende Zeile zurückzukehren?

bischi
01-09-2007, 13:45
Tönt nach ner Aufgabe für nen loop (for, while)

MfG Bischi

Soeren
05-09-2007, 15:22
weiß nicht. glaub n loop wäre doof. muss ich mal drüber nachdenken. Kann ich nicht irgendwie anders dafür sorgen, dass das skript an eine bestimmte zeile zurückspringt?

peschmae
05-09-2007, 16:04
Du möchtest GOTO? Nöö, nix da ;-)

Funktionen je nach dem. :D

MfG Peschmä

Soeren
09-09-2007, 10:35
schade eigentlich :p