hier ist mein, glaube ich, noch nicht fertiges Skript. Mein Ziel ist, dass es meine Skripte auflistet und ich möchte in der Lage sein, die ausgewählte aufgelistete .sh-Datei auszuführen. Vielen Dank im Voraus für die Hilfe. Ich habe versucht, vielleicht (optionone= 1) zu erstellen, weil das Tag „1“ vielleicht als Name der aufgelisteten .sh-Datei erkannt wird? Also habe ich in meinem Ergebnisbereich „result=$(./${optionone})“ versucht.
ich möchte keine Dateinamen eingeben, um es auszuführen. Ich versuche, es einfach zu machen, etwa über eine Systemsteuerung, wo ich einfach auf die Eingabetaste bei einem Dateinamen klicken kann und es dann für mich ausgeführt wird.
`#!/bin/bash
let i=0 # define counting variable
W=() # define working array
while read -r line; do # process file by file
let i=$i+1
W+=($i "$line")
done < <( ls -1 /home/peder/Desktop/scripts )
FILE=$(dialog --title "List of scripts" --menu "Chose one" 24 80 17 "${W[@]}" 3>&2 2>&1 1>&3) # show dialog and store output
clear
optionone= 1
case $FILE in
0 )
clear
echo "Program terminated."
;;
1 )
result=$(./${optionone})
display_result "Scripts"
;;
2 )
result=$(C^)
;;
esac
done
` BILD EINS:
BILD ZWEI:
Antwort1
Einführung
Die folgenden Dateien funktionieren bei mir, wenn sie sich alle in einem eigenen Verzeichnis befinden. Möglicherweise möchten Sie Ihr Menüsystem allgemeiner gestalten.
Speisekarte
#!/bin/bash
# this simplified version works with files in its own directory
i=0 # define counting variable
wa=() # define working array
while read -r line; do # process file by file
let i=$i+1
wa+=($i "$line")
done < scripts
result=$(dialog --title "List of scripts" --menu "Choose a script from the list" 24 80 17 "${wa[@]}" \
3>&2 2>&1 1>&3) # show dialog menu
#clear
if [ "$result" == "" ]
then
echo "Quit"
else
item=$(($result*2-1))
# test output (to be removed later on)
echo "$item"
echo "${wa[$item]}"
read -p "Press Enter to continue or ctrl C to quit"
# end of test output
"${wa[$item]}" # execute selected item
fi
Skripte
./test0
./test1
test0
#!/bin/bash
echo $0 start
echo $0 end
test1
#!/bin/bash
echo $0 start
echo $0 end