decisões baseadas em diálogo em scripts bash?

1

Eu estou tentando escrever um pequeno script bash que dosa coisas diferentes com base em algumas perguntas gui.

isto é o quanto eu tenho agora:

[Timomey@timomeyswetab ~]$ TEST='zenity --question'; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ TEST='zenity --question'; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ 

o problema é que ele não está funcionando como esperado. deve haver alguma diferença na variável TEST, mas não consigo ver nenhuma. O que estou fazendo errado?

obrigado

    
por treaki 13.03.2016 / 15:22

1 resposta

4

zenity não escreve o resultado de sua escolha para std-out. Experimente você mesmo, executando-o na linha de comando:

$ zenity --question
$

Como você pode ver, nada é mostrado, e é por isso que suas variáveis TEST estão vazias.

Em vez disso, zenity retorna o valor de --question como seu status de saída. Isso pode ser visualizado (no bash) com a variável interna $? .

$ zenity --question

Selecione o botão "Não":

$ echo $?
$ 1

Como explicado na man page, 0 significa 'Sim', 1 significa 'Não' e 5 significa que o comando expirou.

Seu comando deve ser:

$ zenity --question; echo test=$?
$ test=1

Observe que diferentes comandos zenity têm comportamentos diferentes. Como a página man explica, o comando --entry envia sua saída para std-out:

$ zenity --entry
$ Test 1..2..3..

Portanto, seus testes funcionariam com esse comando específico.

    
por 13.03.2016 / 18:21

Tags