Bash problem

04/26/2013 20:49 ButterToast™#1
hallo ich habe da ein kleines Problem in Bash ^^

also ich habe ein Kleines script gebaut zur leichten verwaltung meines sicherheit systems , nun scheitere ich inzwischen an einer kleinen funktion denke ich doch mal.

Ich will das man bei 2*) den namen der config eingibt um diese dann zu bearbeiten dennoch bekomme ich es nicht hin dies einzubauen auser dem möchte ich dass wenn man sich dort verschreibt sofort ls eingefügt wird und dann wieder der input kommt.

[Only registered and activated users can see links. Click Here To Register...]
04/26/2013 20:57 MCMonkey#2
Ich hoffe ich habe dich gerade richtig verstanden. Benutzereingaben kannst du mit read abfragen.

Bsp.: read -p "Bitte etwas eingeben: " eingabe

in $eingabe wird dann das eingegebene gespeichert

Um zu schauen, ob ein korrektes Verzeichnis/Datei eingegeben wurde, würde ich einfach die ausgabe von rm betrachten. Wenn nichts drinne steht dann gab es kein fehler, wenn etwas drinne steht dann gab es einen fehler und die eingabe muss erneut getätigt werden.

EDIT#1: Kleiner Tipp bei deinem Menü
Du kannst read sagen, dass er direkt das erste eingegebene zeichen einlesen soll. Dann muss nicht noch Enter gedrückt werden

read -p "Auswahl: " -n1 auswahl
04/26/2013 21:18 Spartan#117#3
Hier hast du! :)
Code:
#!/bin/bash

echo "Gib deine coole Zahl ein:"
read anzahl
case $anzahl in
	"1")
	while true
	do
		echo "Gib den Dateinamen der Config ein!"
		read name
		if [[ -f "/dein/config/verzeichnis/${name}" ]]; then
			echo "Okay, die Datei existiert, leite zu ee weiter!"
			break
		else
			echo "Die Datei existiert nicht. :("
			echo "Hier eine Auflistung!"
			ls -l "/dein/config/verzeichnis/"
		fi
	done
	ee "/dein/config/verzeichnis/${name}"
	;;
	"2")
	echo "Sexy Option #2"
	;;
esac
Quote:
Originally Posted by MCMonkey View Post
Um zu schauen, ob ein korrektes Verzeichnis/Datei eingegeben wurde, würde ich einfach die ausgabe von rm betrachten. Wenn nichts drinne steht dann gab es kein fehler, wenn etwas drinne steht dann gab es einen fehler und die eingabe muss erneut getätigt werden.
Mit rm prüfen ob eine Datei existiert? Wenn sie existiert wird sie ja von rm gelöscht.. :p

€dit:
Da du ja jetzt SH brauchst, hier ein angepasstes Script:
Code:
#!/bin/sh

echo "Gib deine coole Zahl ein:"
read anzahl
case $anzahl in
	"1")
	while true
	do
		echo "Gib den Dateinamen der Config ein!"
		read name
		if [ -f "/dein/config/verzeichnis/$name" ]; then
			echo "Okay, die Datei existiert, leite zu ee weiter!"
			break
		else
			echo "Die Datei existiert nicht. :("
			echo "Hier eine Auflistung!"
			ls -l "/dein/config/verzeichnis/"
		fi
	done
	ee "/dein/config/verzeichnis/$name"
	;;
	"2")
	echo "Sexy Option #2"
	;;
esac
04/26/2013 22:18 MCMonkey#4
Quote:
Mit rm prüfen ob eine Datei existiert? Wenn sie existiert wird sie ja von rm gelöscht.. :p
Das Ziel ist ja die Datei zu löschen oder liege ich da falsch?
Ich meinte damit, dass man lediglich die Rückgabe von rm auswerten soll.
04/26/2013 22:25 Spartan#117#5
Das Ziel war es, falls die Datei existiert, diese bearbeiten zu können. (in meinem Beispiel mit ee)

Sonst hättest du natürlich recht, man sollte (fast) immer den Exitcode bei sowas überprüfen. :)
04/27/2013 00:49 MCMonkey#6
Ohhh man ich sollte wirklich nichts mehr im forum schreiben wenn ich was getrunken habe <.<