Execute o Shell Script depois de clicar no botão - YAD

0

Eu tenho três scripts de shell e gostaria de executar cada script depois de clicar no botão em yad - digamos - eu tenho uma sessão de yad com três botões - se eu clicar em um botão eu vou abrir 1. script - segundo botão abra 2. script e assim por diante .. Veja meu exemplo abaixo -

#!/bin/bash
files=$(yad --width 100 --height 100 --title "Choose the Shell Script" \
    --text="  Please enter analysis details:" \
    --button="ShellScript1:2" \
    --button="ShellScript2:3" \
    --button="ShellScript3:3" \
    --button="Cancel:1" \
    --on-top \
    --center \
)

ret=$?
[[ $ret -eq 1 ]] && exit 0

Obrigado por qualquer ideia ou ajuda.

    
por Geroge 08.01.2016 / 10:05

3 respostas

0

Acabei de adicionar condição:

ret=$?

[[ $ret -eq 1 ]] && exit 0

if [[ $ret -eq 2 ]]; then

      /path/to/shell/1.sh
fi

if [[ $ret -eq 3 ]]; then

    /path/to/shell/2.sh

fi
    
por Geroge 08.01.2016 / 16:41
0

Alternativas: 1. Você poderia usar o caso em vez de se assim:

case $ret in
    1) /path/to/script1 ;;
    2) /path/to/script2 ;;
    3) /path/to/script3 ;;
esac
  1. Você poderia alternativamente chamar os scripts diretamente de cada botão, sem a necessidade de manipular o $? retornar código usando esta sintaxe:

    - button="ShellScript1: bash /path/to/script1.sh"

No meu script semelhante com a lista yad isso funciona bem:

yad --list --width=800 --height=600 --center \
    --button="Display":"/home/gg/Tests/yadabout.sh" --button="Cancel":0  \
    --column "ID" --column "File" \
    --column "Exec" "${list[@]}") 

Diferença: Quando você atribui um código de saída / id a cada botão, depois que um botão pressiona, yad retorna seu valor para a variável (arquivos em seu código) e o diálogo yad é encerrado.

Se em vez de um id de botão você atribuir um comando para executar (caso 2 acima), o diálogo yad permanece na tela e não sai. Mas neste modo não há um valor de retorno yad e, portanto, você não pode analisar a seleção da caixa de diálogo yad para este comando / script externo (não 100% de certeza, mas ainda não encontrei nenhuma maneira de fazê-lo). / p>     

por George Vasiliou 24.10.2016 / 11:11
-1

Para elaborar a resposta anterior:

processes=$(yad --width 100 --height 100 --title "Chose Process" --text="Select" --button="Run Cmd":1 --on-top --center)
ret=$?
if [[ $ret -eq 1 ]]; then
  /path/process.sh
fi
    
por user679647 08.05.2017 / 23:46