hilfe für script

NoezHater

New Member
hallo, habe derzeit ein problem mit einem backupscript was ich schreiben will.

https://pastebin.com/jJSCJWeX

wählt man antwort1, kommt eine weitere frage wo es 2 möglichkeiten gibt, bei jeder passiert dann was anderes.

wählt man antwort2, passiert direkt etwas . doch derzeit ist es so dass wenn ich antwort1 eingebe kommt "Zeile 16: Syntax Fehler: Unerwartetes Dateiende."

bei antwort2 das selbe. was ist falsch ? wie baue ich richtig eine 2. abfrage ein ? danke für hilfen!!
 
Hallo NoezHater,

da fehlt ein "esac".
Probiers mal so:
Code:
#!/bin/bash

clear
echo von...?
echo Bitte waehle: ANTWORT1, ANTWORT2
read answer1
case $answer1 in
    ANTWORT1) 
		echo "ANTWORT1, ok"
		read answer2
		case $answer2 in
			sicher) 
				echo "Du bist dir sicher, ok."
			;;
			cancel) 
				echo "du willst es doch nicht, ok." 
			;;
		esac
		;;
    ANTWORT2) 
		echo "ANTWORT2, ok"
		ls
		;;
esac
exit

Thomas
 
wenn ich antwort 2 eingebe kommt "ANTWORT2, ok" aber dann nicht die 2. abfrage . aber wieso?

wird beendet : root@vserver:/home/USER#
 
ups sry vertan :D

wie mache ich , dass das script überprüft ob ob es den pfad überhaupt gibt , dass er den restlichen vorgang abbricht wenn da was schief läuft ?

2. mit k*) muss das k ja klein sein , wie schreibe ich das dass es k oder K sein sein kann ?
 
Last edited by a moderator:
Hallo NoezHater,

beide Lösungen sind hier mit drin. Du kannst bei case mittels '|' ein ODER realisieren:
Code:
#!/bin/bash
clear

if [ -d "/var" ]; then
	echo "Ordner /var existiert"
fi

echo von...?
echo Bitte waehle: ANTWORT1, ANTWORT2
read answer1
case $answer1 in
    ANTWORT1|antwort1) 
		echo "ANTWORT1, ok"
		read answer2
		case $answer2 in
			sicher) 
				echo "Du bist dir sicher, ok."
			;;
			cancel) 
				echo "du willst es doch nicht, ok." 
			;;
		esac
		;;
    ANTWORT2|antwort2) 
		echo "ANTWORT2, ok"
		ls
		;;
esac
exit

Thomas
 
hier ein Teil des scripts wo ich eine Frage habe : http://hastebin.com/zeyovelede.pl

bei else soll eine Meldung kommen und das Script ab Zeile 1 in diesem Teil wieder anfangen , also nochmal fragen . wie mache ich das? derzeit ist dann einfach ende , also das Script wurde beendet.
 
Solange du die grundlegende Konzepte der Programmierung nicht kennst, wirst du wegen jeder Zeile Code nachfragen müssen. Wenn du das selbst nicht lernen willst, dann frag einfach ob dir das jemand programmiert.

Was könnte eine Schleife bewirken. Denk doch mal nach.
 
Du sollst die Basics lernen! Auch das steht in dem Artikel, den ich gepostet habe.
Du verwendest -d und d steht für Directory. Du testest, ob die Datei ein Verzeichnis ist, ergo führt er den Else-Block aus. Du musst testen ob die Datei existiert.

Hier nochmal eine Auflistung: http://wiki.bash-hackers.org/commands/classictest


Wenn du das wirklich lernen willst, musst du lesen. Viel lesen und ausprobieren. Wir können dir hier keine Grundlagen vermitteln. Das haben Menschen extra aufgeschireben, damit wir uns nicht jedes mal wiederholen müssen. Also nutze die Angebote bitte und versuche das zu verstehen. Auswendig lernen hilft da nicht viel.
 
Last edited by a moderator:
Back
Top