Wie führe ich ein Shell-Skript in einem Shell-Skript mit dem Menüdialog aus?

Wie führe ich ein Shell-Skript in einem Shell-Skript mit dem Menüdialog aus?

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:

mein Code

BILD ZWEI:

wie es aussieht ausgeführt

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

verwandte Informationen