Eu sei que esta é uma pergunta antiga, mas ninguém a respondeu e a solução é bastante simples.
O OP solicitou os resultados e códigos de saída do YAD. Se meu entendimento está correto, é necessário mostrar resultados em YAD como variáveis (arrays são mais fáceis) e presumo que por códigos de saída, códigos de retorno são significados. O código de retorno mostra qual botão foi pressionado, mas no post do OP não há nada para coletar os dados inseridos no formulário.
O que precisa ser feito é que os dados sejam salvos no formulário se o usuário clicar no botão "gravar no banco de dados", mas depois um segundo diálogo é exibido solicitando confirmação. Isso poderia ser feito com ou sem exibir os novos dados, mas faria sentido apresentá-lo novamente para verificação. Aqui está a minha solução:
#!/bin/bash
input=$(yad --title="egPorSS - TYPO3 Constants Setup" --center --borders="20" --width="500" --separator="\n" 2> /dev/null \
--form \
--field="egON API-Key":TEXT \
--field="Host for AJAX-Requests":TEXT \
--field="SOAP-Username":TEXT \
--field="SOAP-Password":H \
--field="SOAP-URL:":TEXT \
--field="SEPA-Service":CHK \
--field="Base-Provider":CHK \
--field="Digital Signature":CHK \
--field="Company name":TEXT \
--field="Street, Number":TEXT \
--field="City":TEXT \
--button="gtk-cancel:1" \
--button=" Update DB!iconok.png:2" \
2>/dev/null
);return_code=$?
[[ "$return_code" -eq "2" ]] && { printf '%s\n' "${input[@]}"| yad --text-info --width="400" --height="400" --title="New Data" \
--button="gtk-cancel:1" \
--button=" Update DB!iconok.png:2" \
2>/dev/null
};return_code=$?
# See if "Update DB" was clicked
[[ "$return_code" -eq "2" ]] && echo "Update DB was clicked" || echo "Cancel was clicked"
A caixa de diálogo yad mostra os campos de dados necessários e a saída é salva em uma matriz chamada entrada. O código de retorno contém o valor da chave que foi pressionada; nesse caso, "1" mostra que cancel foi clicado, "2" é "Update DB". Eu adicionei uma verificação simples, que poderia ser manipulada para apresentar os dados em um formulário novamente, pré-preenchidos com os valores já inseridos, solicitando confirmação. Se confirmado, os dados no array "input" podem ser processados. Eu não entendo o que o OP está fazendo na segunda parte do roteiro dele.
Coisas extras que adicionei:
- Os dados inseridos no campo "Senha SOAP" ficam ocultos para segurança fins.
- No botão "Atualizar banco de dados", adicionei um ícone de seleção verde chamado iconok.png. Isso faz com que pareça melhor do que ficar em branco ao lado do botão Cancelar. Veja como fica:
Aquiestáasegundatela,mostrandoosdadosqueforaminseridos.Issopodeserprocessado,noentanto,énecessário.