Como executo um script de shell, em um script de shell com o diálogo de menu?

1

aqui está o meu script un finnished, eu acho, o que estou tentando fazer é fazer com que ele liste meus scripts, e eu quero ser capaz de executar o arquivo .sh selecionado que está listado. obrigado pela ajuda antecipadamente. Eu tentei talvez fazendo (optionone = 1) porque talvez a marca "1" será reconhecida como o nome do arquivo .sh listado? então na minha área de resultados eu tentei resultado = $ (./$ {optionone})

Eu não quero digitar e arquivar nomes para executá-lo, estou tentando tornar mais fácil, como um painel de controle onde eu posso apenas clicar em entrar em um nome de arquivo e ele corre para mim ..

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

IMAGEM UM:

meu código

IMAGEM DOIS:

o que parece ser executado

    
por Peder Skaaravik 09.06.2017 / 05:16

1 resposta

0

Introdução

O seguinte conjunto de arquivos funciona para mim, quando todos eles estão em um diretório próprio. Você pode querer tornar seu sistema de menu mais geral.

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
    
por sudodus 09.06.2017 / 08:55