Как запустить сценарий оболочки в сценарии оболочки с помощью диалогового окна меню?

вот мой un finnished сценарий, я думаю, что им нужно сделать, так это сделать так, чтобы он перечислял мои сценарии, и я хочу иметь возможность запускать выбранный файл .sh, который указан. Спасибо за помощь заранее. я попытался сделать make (optionone = 1), потому что, возможно, тег «1» будет распознан как имя файла .sh, перечисленного? поэтому в моей области результатов я попробовал result = $ (./$ {optionone})

Я не хочу вводить имена и имена файлов для запуска, im пытается упростить, например панель управления, где i можно просто щелкнуть по имени файла, и он запускается для меня ..

`#!/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

`PICTURE ONE:

мой код

PICTURE TWO:

мой код

1
задан 9 June 2017 в 06:16

3 ответа

Введение

Для меня работает следующий набор файлов, когда все они находятся в собственном каталоге. Вы можете сделать систему меню более общей.

menu

#!/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

scripts

./test0
./test1

test0

#!/bin/bash

echo $0 start
echo $0 end
[d5 ] test1
#!/bin/bash

echo $0 start
echo $0 end
0
ответ дан 22 May 2018 в 21:44
  • 1
    Спасибо @sudous, я сделал ваш пример в своем собственном и узнал от него тонну, спасибо! – Peder Skaaravik 9 June 2017 в 23:23
  • 2
    Добро пожаловать, @PederSkaaravik. Я рад, что мой ответ может вам помочь :-) – sudodus 9 June 2017 в 23:26

Введение

Для меня работает следующий набор файлов, когда все они находятся в собственном каталоге. Вы можете сделать систему меню более общей.

menu

#!/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

scripts

./test0 ./test1

test0

#!/bin/bash echo $0 start echo $0 end

test1

#!/bin/bash echo $0 start echo $0 end
0
ответ дан 18 July 2018 в 11:56

Введение

Для меня работает следующий набор файлов, когда все они находятся в собственном каталоге. Вы можете сделать систему меню более общей.

menu

#!/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

scripts

./test0 ./test1

test0

#!/bin/bash echo $0 start echo $0 end

test1

#!/bin/bash echo $0 start echo $0 end
0
ответ дан 24 July 2018 в 19:53

Другие вопросы по тегам:

Похожие вопросы: