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
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.
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
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
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>
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