Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dialog menu anpassen, bestimmte anzahl felder anzeigen nach variable

Frage Entwicklung Batch & Shell

Mitglied: Tealk144

Tealk144 (Level 1) - Jetzt verbinden

22.12.2014, aktualisiert 23.12.2014, 1182 Aufrufe, 12 Kommentare

Also ich möchte eine bestimmte menge an Auswahlen haben die sich nach der Variable "SERVER" richtet, unten habe ich mal das so gebaut wies funktionieren soll aber so nimmt er mir das natürlich nicht nun weiß ich aber nicht wie ich das umsetze.

01.
dialog --clear --cancel-label "Exit" --ok-label "Select" \ 
02.
--backtitle "Minecraft Server Startscript" \ 
03.
--title "SELECT A SERVER" \ 
04.
--menu "Move using [UP] [DOWN],[Enter] to Select" 18 50 17 \ 
05.
if [ "$SERVER" -ge "1" ]; then 
06.
	1 "$DESC1"\ 
07.
fi 
08.
if [ "$SERVER" -ge "2" ]; then 
09.
	2 "$DESC2"\ 
10.
fi 
11.
if [ "$SERVER" -ge "3" ]; then 
12.
	3 "$DESC3"\ 
13.
fi 
14.
if [ "$SERVER" -ge "4" ]; then 
15.
	4 "$DESC4" 2 
16.
fi 
17.
>"${INPUT}"
Mitglied: Gersen
LÖSUNG 22.12.2014, aktualisiert 23.12.2014
Hallo,

zwei Probleme mit Deinem Code:
1. Die IF-Statements werden m.E. innerhalb der Dialog-Anweisung nicht unterstützt. Die müsstest Du vorher abarbeiten.

2. So wie Deine IF-Statements aktuell aufgebaut sind, wird im Auswahl-Dialog immer nur (höchstens) eine Alternative stehen (, da die Variable SERVER nicht mehrere Werte haben kann). Ich habe die Vermutung, Dein Konstrukt soll so aussehen:

auswahl="" 
if [ "$SERVER" -ge "1" ]; then 
 auswahl="1 $DESC1" 
fi 
if [ "$SERVER" -ge "2" ]; then 
 auswahl="$auswahl 2 $DESC2" 
fi 
if [ "$SERVER" -ge "3" ]; then 
 auswahl="$auswahl 3 $DESC3" 
fi 
if [ "$SERVER" -ge "4" ]; then 
 auswahl="$auswahl 4 $DESC4" 
fi 
INPUT=`dialog --clear --cancel-label "Exit" --ok-label "Select" --backtitle "Minecraft Server Startscript" --title "SELECT A SERVER" --menu "Move using [UP] [DOWN],[Enter] to Select" 18 50 17 $auswahl 3>&1 1>&2 2>&3` 
if [ -n "$INPUT" ]; then 
 echo "Auswahl: $INPUT" 
 else echo "ohne Auswahl verlassen" 
fi 
Oder?

Gruß,
Gersen
Bitte warten ..
Mitglied: Tealk144
22.12.2014, aktualisiert 23.12.2014
läuft irgendwie nicht, hab das so in mein Script eingebaut aber der überspringt mir jetzt den teil
Bitte warten ..
Mitglied: Gersen
23.12.2014 um 08:28 Uhr
Ohne Kenntnis Deines Skripts wird es ganz schwer, Dir zu helfen.
Bitte warten ..
Mitglied: Tealk144
23.12.2014 um 08:54 Uhr
Also das ist die Ganze Auswahlfunktion:
01.
function SELECTS() { 
02.
	dialog --clear --cancel-label "Exit" --ok-label "Select" \ 
03.
	--backtitle "Minecraft Server Startscript" \ 
04.
	--title "SELECT A SERVER" \ 
05.
	--menu "Move using [UP] [DOWN],[Enter] to Select" 18 50 17 \ 
06.
	1 "$DESC1"\ 
07.
	2 "$DESC2"\ 
08.
	3 "$DESC3"\ 
09.
	4 "$DESC4" 2>"${INPUT}" 
10.
	resposes=$? 
11.
	case $resposes in 
12.
	  0)  
13.
			SERVER=$(<"${INPUT}") 
14.
			$ACTION 
15.
		;; 
16.
		1)  
17.
			printf "Exit pressed, go back to main menu." >$OUTPUT 
18.
			msg_output 10 60 "SAY IN CHAT" 
19.
			MENU 
20.
		;; 
21.
		255)  
22.
			printf "[ESC] key pressed, go back to main menu." >$OUTPUT 
23.
			msg_output 10 60 "SAY IN CHAT" 
24.
			MENU 
25.
	esac 
26.
}
Ich hab da nun mal meinen Script teil mit deinem ersetzt und dann wurde mir das ganze einfach übersprungen
Bitte warten ..
Mitglied: Gersen
LÖSUNG 23.12.2014, aktualisiert um 13:16 Uhr
Folgender Code funktioniert hier ohne Probleme:
function SELECTS() { 
 if [ "$SERVER" -ge "1" ]; then 
  auswahl[0]=1 
  auswahl[1]="$DESC1" 
 fi 
 if [ "$SERVER" -ge "2" ]; then 
  auswahl[2]=2 
  auswahl[3]="$DESC2" 
 fi 
 if [ "$SERVER" -ge "3" ]; then 
  auswahl[4]=3 
  auswahl[5]="$DESC3" 
 fi 
 if [ "$SERVER" -ge "4" ]; then 
  auswahl[6]=4 
  auswahl[7]="$DESC4" 
 fi 
dialog --clear --cancel-label "Exit" --ok-label "Select" --backtitle "Minecraft Server Startscript" --title "SELECT A SERVER" --menu "Move using [UP] [DOWN],[Enter] to Select" 18 50 17 "${auswahl[@]}" 2>"${INPUT}" 
resposes=$? 
case $resposes in 
 0) 
    SERVER=$(<"${INPUT}") 
    echo $SERVER 
    ;; 
 1) 
    echo "Exit pressed, go back to main menu." 
    ;; 
 255) 
    echo "[ESC] key pressed, go back to main menu." 
esac 
}
Vorausgesetzt, die notwendigen Variablen (SERVER, DESC1-4, INPUT) sind belegt.
Bitte warten ..
Mitglied: Tealk144
23.12.2014, aktualisiert um 11:52 Uhr
die variable heißt auch SERVERS dammed,

jedenfalls hab ich das jetzt angepasst, aber ein anderes Problem ist aufgetreten
http://saved.im/mtczmzq1mzro/fehler.jpg

Die Variable $DESC1-4" besteht aus mehrere Wörtern
Bitte warten ..
Mitglied: Gersen
23.12.2014, aktualisiert um 13:09 Uhr
Stück für Stück...
Ich habe den Code oben angepasst (in den if-Anweisungen, in der dialog-Anweisung). Sollte eigentlich so funktionieren.
Bitte warten ..
Mitglied: Tealk144
23.12.2014 um 13:15 Uhr
Nun funktioniert es super Danke!
Könntest du mir das if Konstrukt bitte noch erklären? Sowie die Variable ${auswahl[@]}
Bitte warten ..
Mitglied: Gersen
23.12.2014 um 13:40 Uhr
Ausgangspunkt ist Deine Variable SERVER(S) mit der Anzahl der Einträge. Das Skript startet bei der ersten IF-Schleife (Variable SERVER ist größer oder gleich 1; -ge = "greater or equal") und fügt dem Array "auswahl" die ersten beiden Einträge hinzu. Same procedure für die Vergleichswerte 2,3 und 4.

In der dialog-Anweisung wird mit "${auswahl[@]}" das Array wieder expandiert (nimm alle Werte des Arrays). Einzelheiten dazu im Link oben.

Frohes Fest!

Gersen
Bitte warten ..
Mitglied: Tealk144
23.12.2014 um 13:52 Uhr
was ich noch nicht ganz verstehe ist woher weiß der dass da ne neue Zeile ist, wird dafür kein Backslash benötigt?
Bitte warten ..
Mitglied: Gersen
23.12.2014, aktualisiert um 14:19 Uhr
Die Backslashes dienen in der SHELL nur dazu, der Anweisung zu sagen, dass die Ausführung (am Ende der Zeile) noch nicht starten soll, sondern dass die nächste Zeile noch dazugehört.
ech\ 
o "Hal\ 
lo Welt"
Bei der Dialog-Anweisung dienen sie nur der Übersichtlichkeit - damit man sich vorstellen kann, wie der Dialog später aussieht. Es geht auch ohne:
dialog --menu "Choose one:" 10 30 3 1 red 2 green 3 blue
Bitte warten ..
Mitglied: Tealk144
23.12.2014 um 14:22 Uhr
Ok vielen dank
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Visual Studio
gelöst VBS schreibt bestimmte Variable nicht in Textdatei (11)

Frage von Saschaaaaa zum Thema Visual Studio ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...