Dynamisches Menü mit Dialog für Linux Bash
Guten Tag,
in einem Unix Forum habe ich eini interessante Lösung für dynamisches Menü gefunden:
Dynamic Bash Dialog from directory listing
https://www.unix.com/shell-programming-and-scripting/279464-dynamic-bash ...
Allerdings werden hier Informationen aus einem Verzeichnis verwendet.
Ich benötige das gleich, nur soll der Script die Daten aus eine Datei entnehmen. Um genau zu sagen Spalte 2 soll als erstes Argument werden und Spalte 6 und 7, mit einem Leerzeichen getrennt, das zweite Argument.
Egal wie ich es nur ansetze, bekomme ich die Daten nicht richtig angeordnet. Somit bin ich für jede Hilfe wie immer sehr dankbar.
Viele Grüße
Ich
in einem Unix Forum habe ich eini interessante Lösung für dynamisches Menü gefunden:
Dynamic Bash Dialog from directory listing
https://www.unix.com/shell-programming-and-scripting/279464-dynamic-bash ...
Allerdings werden hier Informationen aus einem Verzeichnis verwendet.
Ich benötige das gleich, nur soll der Script die Daten aus eine Datei entnehmen. Um genau zu sagen Spalte 2 soll als erstes Argument werden und Spalte 6 und 7, mit einem Leerzeichen getrennt, das zweite Argument.
#! /bin/bash
source ./CONFIG/config.source
#usage: Dynamic_Menu.bash /home/user/target_directory
#------
declare -a array
i=1 #Index counter for adding to array
j=1 #Option menu value generator
while read line
do
#Dynamic dialogs require an array that has a staggered structure
#array[1]=1
#array[2]=First_Menu_Option
#array[3]=2
#array[4]=Second_Menu_Option
# array[ $i ]=$j
# (( j++ ))
#array=($(tail -n+1 $LISTE | cut -d " " -f2))
#(( j++ ))
array[ ($i + 1) ]=$line
(( i=($i+2) ))
done < <(tail -n+2 "$LISTE" | cut -d " " -f2 ; tail -n+2 "$LISTE" | cut -d " " -f6,7) #consume file path provided as argument
#----------
##uncomment for debug
printf '%s\n' "${array[@]}"
read -rsp "Press any key to continue..." -n1 key
#Build the menu with dynamic content
TERMINAL=$(tty) #Gather current terminal session for appropriate redirection
HEIGHT=20
WIDTH=76
CHOICE_HEIGHT=16
BACKTITLE="Back_Title"
TITLE="Dynamic Dialog"
MENU="Choose a file:"
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${array[@]}" \
2>&1 >$TERMINAL)
Egal wie ich es nur ansetze, bekomme ich die Daten nicht richtig angeordnet. Somit bin ich für jede Hilfe wie immer sehr dankbar.
Viele Grüße
Ich
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 541657
Url: https://administrator.de/contentid/541657
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
werde aus deinem Skript nicht so recht schlau, liegt vermutlich an der Uhrzeit.
Aber durch ne Datei loopen und entsprechende Spalten in Variablen zu packen geht so z.B.:
Grüße
bloody
werde aus deinem Skript nicht so recht schlau, liegt vermutlich an der Uhrzeit.
Aber durch ne Datei loopen und entsprechende Spalten in Variablen zu packen geht so z.B.:
while read line; do
SPALTE2="`echo $line | awk '{ print $2 }'`"
SPALTE6_7="`echo $line | awk '{ print $6" "$7 }'`"
#mach was auch immer mit den Variablen
done < $input_file_path
Grüße
bloody
Glückwunsch @OIOOIOOIOIIOOOIIOIIOIOOO, freut mich das ich helfen konnte.
Manchmal hilft es ein wenig Abstand zu bekommen und das erstmal sacken zu lassen :D
Manchmal hilft es ein wenig Abstand zu bekommen und das erstmal sacken zu lassen :D