Dialog-Code dynamisch ändern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Saxenpower

Dialog-Code dynamisch ändern

Beitrag von Saxenpower » 07.01.2013 16:42:40

Hallo,
ich möchte ein Dialog-Menü flexibel gestalten:

Code: Alles auswählen

dialog --backtitle "Test-TUI ICP-Projekt - Radiolist Widget" \
              --title "Auswahlliste" \
              --radiolist "Bitte treffen Sie Ihre Wahl" 10 50 3 \
                      "Eins" "Option 'eins'" on \
                      "Zwei" "Option 'zwei'" on \
                      "Drei" "Option 'zwei'" on \2> $tempfile
Die zwischen den "" stehenden Werte 'Eins', 'Option eins' etc. sollten aus den Werten hieraus

Code: Alles auswählen

while read line
     do
         database[i]=$line
         echo ${database[$i]}    
     i=$i+1
    done < /tmp/database
ersetzt werden.
Mit z.B.
ICPProject
ICPProject_ENBW
ICPProject_EON
ICPProject_PSI
Das Ergebnis sollte dann so aussehen:

Code: Alles auswählen

dialog --backtitle "Test-TUI ICP-Projekt - Radiolist Widget" \
              --title "Auswahlliste" \
              --radiolist "Bitte treffen Sie Ihre Wahl" 10 50 4 \
                      "1" "ICPProject" on \
                      "2" "ICPProject_ENBW" on \
                      "3" "ICPProject_EON" on \
                      "4" "ICPProject_PSI" on \2> $tempfile
Wie ließe sich das realisieren, so dass die Syntax für die Dialog-Radiolist wieder stimmt und dynamisch veränderbar ist?

Grüße
Saxenpower

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

Re: Dialog-Code dynamisch ändern

Beitrag von newdeb » 07.01.2013 21:43:58

Code: Alles auswählen

items=(ICPProject ICPProject_ENBW ICPProject_EON ICPProject_PSI)
flags=(on off off off)

dialog --backtitle "Test-TUI ICP-Projekt Radiolist Widget" \
       --title "Auswahlliste" \
       --radiolist "Bitte treffen Sie Ihre Wahl" 12 50 4  \
       $(for ((i=0;i<${#items[*]};i++)); do printf "%d %s %s " $((i+1)) ${items[i]} ${flags[i]};done) 2>$tempfile

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Dialog-Code dynamisch ändern

Beitrag von Cae » 07.01.2013 22:29:02

Hinweis: Bash-only. Die sh kann keine Arrays.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten