nam3nL0s

evv - Environment Variables Verifier

Jun 18th, 2015
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.91 KB | None | 0 0
  1. #! /bin/bash
  2.  
  3. #   --------[ EVV - Environment Variable Verifier ]--------
  4. #
  5. # Verifica, setta ed eventualmente crea l'ambiente di lavoro basato su
  6. #+  variabili di comodo per l'identificazione delle directory di maggior
  7. #+  utilita
  8.  
  9. # ============================================================================ #
  10. #       { Dichiarazione VARIABILI }
  11. # DIR1 = directory che possono solo essere verificate
  12. # DIR2 = dir che possono essere verificate ed eventualmente create
  13. # DIR3 = dir che possono essere verificate, create ed aggiunte a PATH
  14. declare -a LEV
  15. declare -a DIR1
  16. declare -a DIR2
  17. declare -a DIR3
  18.  
  19. # inserire i valori desiderati
  20. #   nome_dir="locazione_dir"
  21. # per DIR2 e DIR3 si consiglia la locazione base HOME
  22. DIR1=(
  23.     WP="/media/DATI"       
  24.     WD="/media/DATI/work"
  25.     WW="/mnt/Archivio/myWork"
  26. )
  27. DIR2=(
  28.     BG="$HOME/build"
  29.     BL="$HOME/lbuild"
  30. )
  31. DIR3=(
  32.     SD="$HOME/exes"
  33. )
  34. #array dei livelli
  35. LEV=(
  36.     ${DIR1[*]}
  37.     ${DIR2[*]}
  38.     ${DIR3[*]}
  39. )
  40. T=0
  41. L1=${#DIR1[@]}
  42. L2=${#DIR2[@]}
  43. VERB=
  44. GEDI=
  45. ERR=
  46. MER=
  47. OPE=
  48. NOTG=
  49.  
  50. # ============================================================================ #
  51. #       { Definizione FUNZIONI }
  52.  
  53. # check args
  54. function _carg() {
  55.     if [[ "$1" ]]; then
  56.         case "$1" in
  57.             ( "-v" )
  58.                 VERB=1;;
  59.             ( "-vg" | "-gv" )
  60.                 VERB=1
  61.                 GEDI=1;;
  62.             ( "-g" )
  63.                 GEDI=1;;
  64.             ( "-h" )
  65.                 _help
  66.                 return 0;;
  67.             ( * )
  68.                 MER="evv> ERR127: parametro non corretto\n"
  69.                 return 127
  70.         esac
  71. fi
  72.     if [[ "$2" ]]; then
  73.         case "$2" in
  74.             ( "-v" )
  75.                 VERB=1;;
  76.             ( "-g" )
  77.                 GEDI=1;;
  78.             ( * )
  79.                 MER="evv> ERR127: parametro non corretto\n"
  80.                 return 127
  81.         esac
  82.     fi
  83. }
  84.  
  85. # main
  86. function _evv() {
  87.     for a in ${LEV[*]}
  88.     do
  89.     let T++
  90.         nad=$(echo "$a" | sed "s/=.*$//")
  91.         pad=$(echo "$a" | sed "s/^.*=//")
  92.         if [[ -d "$pad" ]]
  93.         then
  94.             _set
  95.         else
  96.             if [[ $T > $L1 ]] && [[ $GEDI ]]
  97.             then
  98.                 mkdir $pad
  99.                 if [[ $? != 0 ]]
  100.                 then
  101.                     MER="$MER""evv> ERR48: creazione $pad non riuscita\n"
  102.                     NOTG=1
  103.                 else
  104.                     OPE="$OPE""\tDirectory $pad creata\n"
  105.                     _set
  106.                 fi
  107.             else
  108.                 ERR="$ERR""\t$nad non impostato, $pad non trovata\n"
  109.                 if [[ $GEDI ]]; then
  110.                 MER="$MER""evv> ERR48: le directory di primo livello non sono generabili!\n"
  111.                 NOTG=1
  112.                 fi
  113.             fi
  114.         fi
  115.     done
  116. }
  117.  
  118. # set environment variables
  119. function _set() {
  120.     export $a
  121.     OPE="$OPE""\t$nad impostato su $pad\n"
  122.     if [[ $T > $L2 ]]; then
  123.     export PATH="$PATH:$pad"
  124.     OPE="$OPE""\t$pad aggiunto a PATH\n"
  125.     fi 
  126. }
  127.  
  128. # help message
  129. function _help() {
  130.     mhe="\nNAME\n"
  131.     mhe="$mhe""\tevv - Environment Variables Verifier\n"
  132.     mhe="$mhe""\nSYNOPSIS\n"
  133.     mhe="$mhe""\tevv [-vg|-h]\n"
  134.     mhe="$mhe""\nDESCRIPTION\n"
  135.     mhe="$mhe""\t'evv' rende coerente l'ambiente di lavoro shell in base ad uno"
  136.     mhe="$mhe"" schema di directoy definito su tre \"livelli\":\n"
  137.     mhe="$mhe""\t\tLivello 1\tdirectory che dovrebbero esistere da sistema\n"
  138.     mhe="$mhe""\t\t\t\tIn genere directory di montaggio partizioni dati, hard"
  139.     mhe="$mhe"" disk esterni, ecc...\n"
  140.     mhe="$mhe""\t\t\t\tL'unica operazione possibile e' l'impostazione di una"
  141.     mhe="$mhe"" variabile di scorciatoia\n"
  142.     mhe="$mhe""\t\tLivello 2\tdirectory utente senza eseguibili\n"
  143.     mhe="$mhe""\t\t\t\tGeneralmente directory temporanee, di scambio, di"
  144.     mhe="$mhe"" compilazione sorgenti o compilazione kernel\n"
  145.     mhe="$mhe""\t\t\t\t. viene impostata la variabile di scorciatoia;\n"
  146.     mhe="$mhe""\t\t\t\t. in modalita' 'generate' vengono create se non esistono\n"
  147.     mhe="$mhe""\t\tLivello 3\tdirectory utente con eseguibili\n"
  148.     mhe="$mhe""\t\t\t\tSoprattutto directory contenenti script personalizzati"
  149.     mhe="$mhe"" ed altri eseguibili\n"
  150.     mhe="$mhe""\t\t\t\t. viene impostata la variabile di scorciatoia;\n"
  151.     mhe="$mhe""\t\t\t\t. in modalita' 'generate' vengono create se non esistono;\n"
  152.     mhe="$mhe""\t\t\t\t. vengono inserite in PATH, consentendo"
  153.     mhe="$mhe"" l'esecuzione diretta dei programmi contenuti\n"
  154.     mhe="$mhe""\nOPTIONS\n"
  155.     mhe="$mhe""\t-g\tmodalita' 'generate' - abilita la creazione delle"
  156.     mhe="$mhe"" directory mancanti (livello 2 e 3)\n"
  157.     mhe="$mhe""\t-h\thelp - visualizza questo \"miniman\"\n"
  158.     mhe="$mhe""\t-v\tverbose - abilita messaggi di output ed errore\n\n"
  159.     echo -e "$mhe"  
  160. }
  161.  
  162. # ============================================================================ #
  163. #       { MAIN }
  164.  
  165. _carg $@
  166.  
  167. if [[ "$?" != "0" ]]
  168.     then
  169.         _help  
  170.         MER="$MER""evv> programma interrotto." >&2
  171.         echo -e "$MER"
  172.         return 127
  173.     else
  174.         _evv
  175.         if [[ $VERB ]]; then
  176.             if [[ $OPE ]]; then
  177.                 echo "evv> il programma ha eseguito le seguenti operazioni:"
  178.                 echo -e "$OPE"
  179.             fi
  180.             if [[ $ERR ]]; then
  181.                 echo "evv> programma terminato con le seguenti incongruenze:"
  182.                 echo -e "$ERR"
  183.             fi
  184.             if [[ $NOTG ]]; then
  185.                 echo -e "$MER" >&2
  186.                 return 48
  187.             fi
  188.         fi
  189. fi
  190.  
  191. return 0
Advertisement
Add Comment
Please, Sign In to add comment