Advertisement
Guest User

12333

a guest
May 25th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 8.63 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #Introduz os dados num ficheiro
  4. introduzir()
  5. {
  6. clear
  7. nome=""
  8. morada=""
  9. telefone=""
  10. email=""
  11.  
  12.  
  13. # open fd
  14. exec 3>&1
  15.  
  16. # Store data to $VALUES variable
  17. VALUES=$(dialog --ok-label "Guardar" \
  18.       --backtitle "Lista telefonica" \
  19.       --title "Criar novo contacto" \
  20.       --form "Dados:" \
  21. 15 50 0 \
  22.     "Nome:"     1 1 "$nome"      1 10 40 0 \
  23.     "Morada:"   2 1 "$morada"    2 10 40 0 \
  24.     "Telefone:" 3 1 "$telefone"  3 10 15 0 \
  25.     "Email:"    4 1 "$email"     4 10 40 0 \
  26. 2>&1 1>&3)
  27.  
  28.  
  29.  
  30. # display values just entered
  31. # echo "$VALUES"
  32.     i=1
  33.       j=4
  34.       while true;do
  35.           valores=`echo "$VALUES" | tail -n $j | head -n 1`
  36.           case $i in
  37.                1)nome="$valores";;
  38.                2)morada="$valores";;
  39.                3)telefone="$valores";;
  40.                4)email="$valores";;
  41.           esac
  42.           i=`expr $i + 1`
  43.           j=`expr $j - 1`
  44.  
  45.           test $i -eq 10 && break
  46.       done
  47.      
  48.       mysql -u root -p -e "INSERT INTO contactos VALUES(NULL,'$nome','$morada','$telefone','$email',NULL)" agenda
  49.      
  50.      
  51.  
  52.            
  53.     # Ela apertou CANCELAR ou ESC, então vamos sair...
  54.         [ $? -ne 0 ] && break
  55. }
  56.  
  57.  
  58. # LISTAR DADOS
  59. listar()
  60. {
  61.     # open fd
  62. exec 3>&1
  63.     palavra=$(dialog --ok-label "Ok" \
  64.       --backtitle "Lista telefonica" \
  65.       --title "Mostrar registro" \
  66.       --form "Dados:" \
  67. 15 50 0 \
  68.     "Nome:"     1 1 "$palavra"      1 10 40 0 \
  69. 2>&1 1>&3)
  70.     [ $? -ne 0 ] && break
  71.    
  72.    
  73.  
  74.     S=$(mysql -u root -p -e  "SELECT * FROM contactos WHERE nome LIKE '$palavra'" agenda)
  75.    
  76.  
  77.   [ "$S" ] || { echo "Registro não encontrado";exit; }
  78.  
  79.   # colocar um TAB como IFS
  80.   IFS="$(echo -e '\t')"
  81.   # Apagamos a primeira linha, pois ela contém o nome dos campos
  82.   S=$(echo "$S" | sed '1d')
  83.  
  84.   echo "$S" | while read id nome morada telefone email data_insert;
  85.   do
  86.  
  87.       resultado=$(dialog --ok-label "" \
  88.               --backtitle "Resultados da pesquisa" \
  89.               --title "" \
  90.               --form "Dados:" \
  91.         15 50 0 \
  92.             "id:"       1 1 "$id"      1 10 40 0 \
  93.             "Nome:"     2 1 "$nome"      2 10 40 0 \
  94.             "Morada:"   3 1 "$morada"    3 10 40 0 \
  95.             "Telefone:" 4 1 "$telefone"  4 10 15 0 \
  96.             "Email:"    5 1 "$email"     5 10 40 0 \
  97.             "Data Inserção :"    6 1  "$data_insert"     6 10 40 0 \
  98.         2>&1 1>&3)
  99.  
  100.   done
  101.    
  102.    
  103. }
  104.  
  105.  
  106. # PESQUISA
  107. pesquisa()
  108. {
  109.     # open fd
  110. exec 3>&1
  111.     palavra=$(dialog --ok-label "Ok" \
  112.       --backtitle "Lista telefonica" \
  113.       --title "Pesquisar" \
  114.       --form "Dados:" \
  115. 15 50 0 \
  116.     "Palavra:"     1 1  "$palavra"      1 10 40 0 \
  117. 2>&1 1>&3)
  118.     [ $? -ne 0 ] && break
  119.    
  120.    
  121.  
  122.     S=$(mysql -u root -p -e  "SELECT * FROM contactos WHERE (nome LIKE '$palavra') OR (morada LIKE '$palavra') OR (telefone LIKE '$palavra') OR (email LIKE '$palavra')" agenda)
  123.    
  124.  
  125.   [ "$S" ] || { echo "Registro não encontrado";exit; }
  126.  
  127.  
  128.  
  129.    # colocar um TAB como IFS
  130.   IFS="$(echo -e '\t')"
  131.   # Apagamos a primeira linha, pois ela contém o nome dos campos
  132.   S=$(echo "$S" | sed '1d')
  133.  
  134.   echo "$S" | while read id nome morada telefone email data_insert;
  135.   do
  136.  
  137.       resultado=$(dialog --ok-label "" \
  138.               --backtitle "Resultados da pesquisa" \
  139.               --title "" \
  140.               --form "Dados:" \
  141.         15 50 0 \
  142.             "id:"       1 1 "$id"      1 10 40 0 \
  143.             "Nome:"     2 1 "$nome"      2 10 40 0 \
  144.             "Morada:"   3 1 "$morada"    3 10 40 0 \
  145.             "Telefone:" 4 1 "$telefone"  4 10 15 0 \
  146.             "Email:"    5 1 "$email"     5 10 40 0 \
  147.             "Data Inserção :"    6 1  "$data_insert"     6 10 40 0 \
  148.         2>&1 1>&3)
  149.  
  150.   done
  151.    
  152. }
  153.  
  154.  
  155. #alterar Nome
  156. alterarnome()
  157. {
  158.     S=$(mysql -u root -p -e  "SELECT * FROM contactos WHERE nome LIKE '$palavra'" agenda)
  159.             [ "$S" ] || { echo "Nome não encontrado";exit; }
  160.            
  161.             # open fd
  162.             exec 3>&1
  163.             palavra=$(dialog --ok-label "Novo Nome" \
  164.             --backtitle "Lista telefonica" \
  165.             --title "Escolha o novo nome" \
  166.             --form "Dados:" \
  167.                 15 50 0 \
  168.                 "Nome:"     1 1 "$nome"      1 10 40 0 \
  169.             2>&1 1>&3)
  170.                 [ $? -ne 0 ] && break
  171.            
  172.             mysql -u root -p -e "UPDATE contactos SET nome='$nome' WHERE nome='$palavra'"
  173. }
  174. #alterar Morada
  175. alterarmorada()
  176. {
  177.     S=$(mysql -u root -p -e  "SELECT * FROM contactos WHERE morada LIKE '$palavra'" agenda)
  178.             [ "$S" ] || { echo "Morada não encontrado";exit; }
  179.            
  180.             # open fd
  181.             exec 3>&1
  182.             palavra=$(dialog --ok-label "Nova Morada" \
  183.             --backtitle "Lista telefonica" \
  184.             --title "Escolha a nova morada" \
  185.             --form "Dados:" \
  186.                 15 50 0 \
  187.                 "Morada:"     1 1   "$nome"      1 10 40 0 \
  188.             2>&1 1>&3)
  189.                 [ $? -ne 0 ] && break
  190.            
  191.             mysql -u root -p -e "UPDATE contactos SET morada='$morada' WHERE morada='$palavra'"
  192. }
  193. #alterar Telefone
  194. alterartelefone()
  195. {
  196.     S=$(mysql -u root -p -e  "SELECT * FROM contactos WHERE telefone LIKE '$palavra'" agenda)
  197.             [ "$S" ] || { echo "Telefone não encontrado";exit; }
  198.            
  199.             # open fd
  200.             exec 3>&1
  201.             palavra=$(dialog --ok-label "Novo Telefone" \
  202.             --backtitle "Lista telefonica" \
  203.             --title "Escolha o novo telefone" \
  204.             --form "Dados:" \
  205.                 15 50 0 \
  206.                 "Telefone:"     1 1 "$telefone"      1 10 40 0 \
  207.             2>&1 1>&3)
  208.                 [ $? -ne 0 ] && break
  209.            
  210.             mysql -u root -p -e "UPDATE contactos SET telefone='$telefone' WHERE telefone='$palavra'"
  211. }
  212. #alterar Email
  213. alteraremail()
  214. {
  215.     S=$(mysql -u root -p -e  "SELECT * FROM contactos WHERE email LIKE '$palavra'" agenda)
  216.             [ "$S" ] || { echo "Email não encontrado";exit; }
  217.              
  218.             # open fd
  219.             exec 3>&1
  220.             palavra=$(dialog --ok-label "Novo Email" \
  221.             --backtitle "Lista telefonica" \
  222.             --title "Escolha o novo email" \
  223.             --form "Dados:" \
  224.                 15 50 0 \
  225.                 "Email:"     1 1    "$email"      1 10 40 0 \
  226.             2>&1 1>&3)
  227.                 [ $? -ne 0 ] && break
  228.            
  229.             mysql -u root -p -e "UPDATE contactos SET email='$email' WHERE email='$palavra'"
  230. }
  231.  
  232.  
  233. #alterar
  234. alterar()
  235. {
  236.     exec 3>&1
  237.     palavra=$(dialog --ok-label "Ok" \
  238.       --backtitle "Lista telefonica" \
  239.       --title "Alterar" \
  240.       --form "Nome da pessoa a alterar dados:" \
  241. 15 50 0 \
  242.     "Nome:"     1 1 "$nome"      1 10 40 0 \
  243. 2>&1 1>&3)
  244.     [ $? -ne 0 ] && break
  245.  
  246.    
  247.  
  248.     resposta=$(
  249.       dialog --stdout               \
  250.              --title 'Lista Telefonica'  \
  251.              --menu 'Campo:' \
  252.             0 0 0                   \
  253.             1 'Nome'            \
  254.             2 'Morada'              \
  255.             3 'Telefone'        \
  256.             4 'Email'               \
  257.             5 'Sair'        \ )
  258.  
  259.  
  260.     # Ela apertou CANCELAR ou ESC, então vamos sair...
  261.     [ $? -ne 0 ] && break
  262.  
  263.     # De acordo com a opção escolhida, dispara programas
  264.     case "$resposta" in
  265.          1) alterarnome ;;
  266.          2) alterarmorada ;;
  267.          3) alterartelefone ;;
  268.          4) alteraremail ;;
  269.          0) break ;;
  270.     esac
  271.  
  272.  
  273. }
  274.  
  275. apagar()
  276. {
  277. # open fd
  278. exec 3>&1
  279.     palavra=$(dialog --ok-label "Ok" \
  280.       --backtitle "Lista telefonica" \
  281.       --title "Apagar" \
  282.       --form "Dados:" \
  283. 15 50 0 \
  284.     "Nome:"     1 1 "$nome"      1 10 40 0 \
  285. 2>&1 1>&3)
  286.     [ $? -ne 0 ] && break
  287.    
  288.     dialog --title "Delete file" \
  289. --backtitle "Linux Shell Script Tutorial Example" \
  290. --yesno "De certeza que quer apagar $palavra" 7 60
  291.  
  292. # Get exit status
  293. # 0 means user hit [yes] button.
  294. # 1 means user hit [no] button.
  295. # 255 means user hit [Esc] key.
  296. response=$?
  297. case $response in
  298.    0) mysql -u root -p -e  "DELETE FROM contactos WHERE nome LIKE '$palavra'" agenda
  299.    echo "Apagado.";;
  300.    1) echo "Nao apagado.";;
  301.    255) echo "[ESC] Pressionado.";;
  302. esac
  303.  
  304.  
  305.  
  306.  
  307.    
  308. }
  309.  
  310.  
  311. # Mostra o menu na tela, com as ações disponíveis
  312. while : ; do
  313.     resposta=$(
  314.       dialog --stdout               \
  315.              --title 'Lista Telefonica'  \
  316.              --menu 'Introduza a opção:' \
  317.             0 0 0                   \
  318.             1 'Introduzir'          \
  319.             2 'Listar'              \
  320.             3 'Pesquisar'           \
  321.             4 'Alterar'             \
  322.             5 'Apagar'              \
  323.             0 'Sair'                )
  324.  
  325.     # Ela apertou CANCELAR ou ESC, então vamos sair...
  326.     [ $? -ne 0 ] && break
  327.  
  328.     # De acordo com a opção escolhida, dispara programas
  329.     case "$resposta" in
  330.          1) introduzir ;;
  331.          2) listar ;;
  332.          3) pesquisa ;;
  333.          4) alterar ;;
  334.          5) apagar ;;
  335.          0) break ;;
  336.     esac
  337.  
  338. done
  339.  
  340. # final msg
  341. echo 'Obrigado por utilizar a agenda e Adeus!'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement