Ich versuche whiptail zu verwenden, da es eine leichte Alternative zu dialog ist und anscheinend in den meisten Systemen installiert ist (dh Leute müssen nicht herumgehen und es installieren, wenn es "vergessen" oder nicht installiert wurde standardmäßig). Ich überprüft question #1562666 für ein paar Beispiele hier, aber ich bin auf der Suche nach einer Alternative zum Umleiten der Ausgabe, so dass eine Umgebungsvariable setzt, anstatt nur auf die Festplatte zu schreiben.whiptail: Wie umleiten Ausgabe auf Umgebungsvariable?
Zum Beispiel, wenn ich mit Dialog versuchen, das funktioniert (ich das Dialogfeld angezeigt wird, und eine Umgebungsvariable gesetzt ist):
result=$(dialog --output-fd 1 --inputbox "Enter some text" 10 30)
echo Result=$result
Doch dies funktioniert nicht, wenn anstelle whiptail Verwendung von Dialog, da das Dialogfeld nie angezeigt wird. Ich habe es in eine Datei umleiten und es zum Beispiel lesen:
result=$(tempfile) ; chmod go-rw $result
whiptail --inputbox "Enter some text" 10 30 2>$result
echo Result=$(cat $result)
rm $result
Es funktioniert, und ich kann die gleiche tempfile von Anfang an verwenden zu beenden (es zu entfernen, wenn das Skript beendet). Aber es ist peinlich, gezwungen zu sein, die Festplatte nur dafür zu verwenden, anstatt sie im Speicher zu belassen (umleiten zu einer Umgebungsvariablen).
Also frage ich: Ich vergesse etwas - oder muss ich wirklich müssen die Festplatte verwenden, wenn Whiptail?
Vielen Dank im Voraus für Ihr Feedback.
Es scheint so, wann immer whiptail hat seine stdin/stdout umgeleitet, wird nicht angezeigt (ob mit $ (...) oder ... |). Ihre Lösung sieht ziemlich gut aus betrachtet das Verhalten von Whiptail. BTW, auf meinem Debian-Rechner habe ich whiptail, aber standardmäßig keinen Dialog, auf opensuse, habe ich Dialog und kein existierendes Whiptail in den offiziellen Repositories. – Zeograd
@Zeograd zumindest auf RHEL Whiptail kommt in "Newt" -Paket. – Kimvais
Richtig, danke Kimvais. "zypper search whiptail" scheiterte bei mir, auch wenn die Information darauf hinwies, dass es in war. – Zeograd