BASH Hilfe zu Checkbox gesucht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
freekster
Beiträge: 13
Registriert: 17.09.2008 12:09:16

BASH Hilfe zu Checkbox gesucht

Beitrag von freekster » 17.07.2011 13:22:58

Hallo zusammen.
Ich stehe gerade vor einem kleinen Problem.
Ich versuche mir gerade nen Script mit einer Checkbox zur auswahl zu schreiben. Mein Problem ist
das die Checkbox mit einträgen aus einer Datei gefüllt werden soll, die Textdatei ändert sich natürlich von den einträgen her, nur die Formatierung bleibt immer gleich.
Wenn ich jetzt aber her gehe und die die Datei einlese und versuche mit echo den inhalt auszugeben, wird der inhalt der Checkbox versetzt weil
das echo mit angezeigt wird.
Hier mal der Code

Code: Alles auswählen

: ${DIALOG=dialog}
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
links=$(cat list.lst)

$DIALOG --clear --title "Frage" --checklist "Addons installieren" 0 40 0 echo $links 2>$tempfile
retval=$?
read selection <$tempfile
case $retval in
0)
        echo "ihre Auswahl: $selection";;
1)
        echo "Keine Auswahl, Abbruch";;
255)
        echo "keine Auswahl, Abbruch durch ESC";;
esac
Die Datei die eingelesen werden soll, sieht so aus

Code: Alles auswählen

eintrag1 . off
eintrag2 . off
eintrag3 . off
eintrag4 . off
...
würde mich über hilfe sehr freuen
MFG FrEeKsTeR

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von GoKi » 17.07.2011 15:10:43

Einfach das echo weglassen!?!
MfG GoKi
:wq

freekster
Beiträge: 13
Registriert: 17.09.2008 12:09:16

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von freekster » 18.07.2011 09:36:33

Das klappt leider auch nicht, dann kommt bei mir die Fehlermeldung
keine Auswahl, Abbruch durch ESC

sprich der letzte punkt in der case auswahl

Benutzeravatar
MustrumRidcully
Beiträge: 124
Registriert: 16.06.2005 04:11:24
Lizenz eigener Beiträge: GNU General Public License
Wohnort: berlin

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von MustrumRidcully » 18.07.2011 10:12:49

die zeile kannste weglassen:

Code: Alles auswählen

links=$(cat list.lst)
und das, was sie meint, direkt (und ohne echo) hier eintragen:

Code: Alles auswählen

$DIALOG --clear --title "Frage" --checklist "Addons installieren" 0 40 0 $(cat list.lst) 2>$tempfile
dann klappt dat. ;)
Volk ist Opium für eine Religion.

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von newdeb » 18.07.2011 14:58:08

dialog-checklist verlangt 3 Einträge je Menüpunkt:
--checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...
In deiner Menü-Datei fehlt eine Spalte, also entweder "tag" oder "item".
Das sollte z.B. so aussehen:

Code: Alles auswählen

1 eintrag1  off
2 eintrag2  off
3 eintrag3  off
4 eintrag4  off
Falls das Format der Menüdatei nicht änderbar ist, kann man im Skript den Einträgen einfach eine Laufnummer verpassen,
etwa so:

Code: Alles auswählen

declare -i nr=0
links=$(while read line; do echo $((++nr)) $line; done <list.lst)
Im dialog-Kommando einfach $links angeben, ohne echo, wie GoKi vorgeschlagen hatte.

EDIT: hatte die Punkte als Tabs interpretiert, das Format der Originaldatei stimmt also doch!

freekster
Beiträge: 13
Registriert: 17.09.2008 12:09:16

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von freekster » 19.07.2011 11:17:03

Das mit $(cat list.lst) klappt leider auch nicht, da kommt dann auch die Meldung
keine Auswahl, Abbruch durch ESC

mfg FrEeKsTeR

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von detix » 19.07.2011 19:23:22

Blicke bei deinem Skript nicht so ganz durch,
aber probiers mal mit dem Parameter "--stdin" und damit dann in etwa so:

Code: Alles auswählen

links=$(cat list.lst)
AUSWAHL=$(dialog --clear --title "Frage" --stdout --checklist "Addons installieren" 0 40 0 $links)
echo $?; #OK, Abbrechen oder ESC gedrückt?
echo $AUSWAHL; #bei OK die Auswahl selbst
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
MustrumRidcully
Beiträge: 124
Registriert: 16.06.2005 04:11:24
Lizenz eigener Beiträge: GNU General Public License
Wohnort: berlin

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von MustrumRidcully » 20.07.2011 06:09:14

freekster hat geschrieben:Das mit $(cat list.lst) klappt leider auch nicht, da kommt dann auch die Meldung
keine Auswahl, Abbruch durch ESC
hmm... versteh ich nicht. denn das da:

Code: Alles auswählen

#!/bin/bash

${DIALOG=/usr/bin/dialog}
tempfile=$(tempfile 2>/dev/null) || tempfile=/tmp/file$$
trap "rm -f $tempfile" 0 1 2 5 15

$DIALOG --clear --title "Frage" --checklist "Addons installieren" 0 40 0 $(cat list.lst) 2>$tempfile
retval=$?;
read selection <$tempfile
case $retval in
     0)
       echo "ihre Auswahl: $selection";;
     1)
       echo "Keine Auswahl, Abbruch";;
     255)
       echo "keine Auswahl, Abbruch durch ESC";;
ist doch dein skript? funktioniert bei mir einwandfrei.
Volk ist Opium für eine Religion.

freekster
Beiträge: 13
Registriert: 17.09.2008 12:09:16

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von freekster » 20.07.2011 09:33:25

Ok ich hab das nochmal bei mir Zuhause laufen lassen, komischerweise funktionert das script bei mir Zuhause auch, nur auf meinen V-Server nicht.

Was mir allerdings aufgefallen ist, das auf meinem V-Server
die Version hier installiert ist
GNU bash, version 3.2.39(1)-release (x86_64-pc-linux-gnu)
und auf meinem Heimrechner die hier
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Die dialog Version ist bei beiden gleich.
Kann es sein das es vieleicht an der Bash Version liegt?

Benutzeravatar
MustrumRidcully
Beiträge: 124
Registriert: 16.06.2005 04:11:24
Lizenz eigener Beiträge: GNU General Public License
Wohnort: berlin

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von MustrumRidcully » 21.07.2011 12:06:41

das halte ich für sehr unwahrscheinlich. bist du dir sicher, dass die versionen deines skripts auf beiden rechnern identisch sind?
Volk ist Opium für eine Religion.

Benutzeravatar
mokrates
Beiträge: 39
Registriert: 10.09.2005 18:32:55
Wohnort: Hamburg

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von mokrates » 21.07.2011 12:39:34

vielleicht startet er es mit 'sh script', und sh ist einmal bash und einmal dash, oder so?
Auf jeden fall mit ./script starten!

freekster
Beiträge: 13
Registriert: 17.09.2008 12:09:16

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von freekster » 22.07.2011 08:46:32

Die scripts sind beide Identisch.
hab es vom V_Server auf den hei mrechner gezogen und mit ./ gestartet.
Zuhause läuft es , auf dem V-Server leider nicht.
Hat vieleicht sonst noch jemand eine idee?

Benutzeravatar
MustrumRidcully
Beiträge: 124
Registriert: 16.06.2005 04:11:24
Lizenz eigener Beiträge: GNU General Public License
Wohnort: berlin

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von MustrumRidcully » 22.07.2011 09:56:02

wie sind denn die versionen von dialog?
Volk ist Opium für eine Religion.

freekster
Beiträge: 13
Registriert: 17.09.2008 12:09:16

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von freekster » 23.07.2011 11:58:48

Die sind beide gleich.
Hab nochmal das stück Code von detix versucht

Code: Alles auswählen

links=$(cat list.lst)
AUSWAHL=$(dialog --clear --title "Frage" --stdout --checklist "Addons installieren" 0 40 0 $links)
echo $?; #OK, Abbrechen oder ESC gedrückt?
echo $AUSWAHL; #bei OK die Auswahl selbst
und bin damit auf meinem V-Server nen stück weiter gekommen.
Problem an der Stelle ist jetzt alelrdings das er mir trotz der drei Einträge in der list.lst
sagt das er nur zwei einträge findet.

freekster
Beiträge: 13
Registriert: 17.09.2008 12:09:16

Re: BASH Hilfe zu Checkbox gesucht

Beitrag von freekster » 23.07.2011 12:07:00

Ok jetzt hab ich den Fehler gefunden, vielen dank für die Hilfe.
und hier die Auflösung.

für mich hat es funktioniert als ich den "PUNKT" entfernt und das "off" in ein normales wort geändert habe.

meine list.lst sieht nun so aus

Code: Alles auswählen

test1 einwort
test2 einwort
test3 einwort
...


aus irgend einem grund funktioniert es nun zumindest auf meinem V-Server

EDIT:
Lokal funktioniert das Script nun auch.
Vielen dank nochmal für die Hilfe
Gruß FrEeKsTeR

Antworten