Warum funktioniert mein BASH - Dialog nicht ?

LinuxTux23

Grünschnabel
Beiträge
1
Hallo,

ich habe hier eine kleine Funktion in BASH geschrieben, die den Benutzer nach einer Lokalen IP Adresse Fragt, und diese dann angpingt.

Wenn ich einen Wert in das Textfeld eingegeben habe, kommt das Textfeld noch einmal und so immer weiter. Das heißt ich habe versehentlich eine Endlosschleife generiert.

Kann mir jemand, der besser in BASH Programmieren kann sagen, wie ich mein Problem lösen kann.

Vielen Dank !

Code:

Code:
function ping() {
 PINGIP=$(dialog --clear --backtitle "Bash - Assistant" \
 --title "Ping" \
 --inputbox "Test1" 0 0 3>&1 1>&2 2>&3 3>&-)
 dialog --clear
 dialog --msgbox "$(ping -c3 $PINGIP)" 5 50
 end
}
ping
 

floyd62

Routinier
Beiträge
325
Hi,

Hauptproblem ist, dass sich deine ping-Funktion in der msgbox-Zeile wieder selbst aufruft; benenn entweder die Funktion um, oder verwende den vollen Pfad des ping-Kommandos in der message-Box, um die Rekursion zu vermeiden:
Code:
dialog --msgbox "$(/usr/bin/ping -c3 $PINGIP)" 5 50

Ich würde empfehlen, solchen Wrapper-Funktionen immer einen Namen zu geben, der sich vom zugrunde liegenden Kommando unterscheidet, also etwa:

Code:
function _ping() {
        PINGIP=$(dialog --inputbox "IP" 0 0 3>&1 1>&2 2>&3) || return
        dialog --infobox "ping $PINGIP ..." 0 0
        dialog --msgbox "$(ping -c3 $PINGIP)" 0 0
}
_ping

Gruss
 

Ähnliche Themen

verzeichniss suche funktioniert nicht

Hilfe zu 'dialog' Konstrukt... ich peils net ^^

NagiosGrapher 1.7.1 funktioniert nicht

Image Resizer

Shell Script-Hilfe!

Oben