Prezados(as), há muito tempo não trago um problema aqui, normalmente chegando a solução deles via pesquisa, porém dessa vez não foi possível.
Tenho, aqui no trabalho, alguns scripts para simplificar a vida de todos (inclusão/exclusão de usuários/grupos no server, alteração de grupo do usuário, backup, etc, etc, etc) e resolvi fazer uma grande reformulação neles, o que levou a necessidade de criar formulários nos shell scripts para tal feito.
Após alguns estudos (via google) vi que
o próprio dialog poderia me ajudar com esse formulário, o que facilitaria em muito minha vida, inclusive funcionando perfeitamente,
desde que todos os campos sejam preenchidos.
Porém quando os campos não são todos preenchidos estou tendo problemas, sendo que o conteúdo dos campos não ficam nos lugares corretos. Para que possam entender coloco abaixo um script que estou usando apenas para testes. Basta colocar o conteúdo em um arquivo, dar permissão de execução e testar (primeiro preencher todos os campos, depois deixar alguns sem informação).
Agradeço se alguém puder ajudar.
#-----------------------------_Script_-----------------------------#
#!/bin/bash
# Teste formulárion com dialog
#
shell="/bin/bash"
home="/home"
groups="grupo"
#email=""
#sala=""
#nmCompleto=""
user=""
# open file descriptor (fd)
exec 3>&1
# Store data to $VALUES variable
VALUES=$(dialog --ok-label "Submit" \
--backtitle "Linux User Managment" \
--title "Useradd" \
--form "Create a new user" \
15 50 0 \
"Username :" 1 1 "$user" 1 10 10 0 \
"Nome Completo:" 2 1 "$nmCompleto" 2 10 40 0 \
"Sala :" 3 1 "$sala" 3 10 15 0 \
"Email :" 4 1 "$email" 4 10 20 0 \
"Group :" 5 1 "$groups" 5 10 8 0 \
"HOME :" 6 1 "$home" 6 10 40 0 \
"Shell :" 7 1 "$shell" 7 10 15 0 \
2>&1 1>&3)
# close fd
exec 3>&-
i=1
IFSold=$IFS
export IFS="
"
for valores in $VALUES;do
case $i in
1)NmUser="$valores";;
2)NmCompleto="$valores";;
3)NmSala="$valores";;
4)Email="$valores";;
5)Telefone="$valores";;
6)Groups="$valores";;
7)Home="$valores";;
8)Shell="$valores";;
9)CotaUser="$valores";;
esac
i=`expr $i + 1`
done
export IFS="$IFSold"
dialog --title "Oi" --msgbox "NmUser: $NmUser\nNmCompleto: $NmCompleto\nNmSala: $NmSala\nEmail: $Email\nTelefone: $Telefone\nGroups: $Groups\nHome: $Home\nShell: $Shell\nCotaUser: $CotaUser" 0 0
#-------------------------_FIM_Script_--------------------------#
[]'s
Cristiano