
+---------------------------------+
| Sommario: |
| 1- Introduzione |
| 2- Usiamo 'select' |
| 3- Usare la linea di comando |
| 4.1- Prorammino finale (con 'select') |
| 4.2- Prorammino finale (utilizzando la linea di comando) |
| 5- Compiti per casa =) |
| 6- Conclusione, greets e fuckto |
| |
| ################ |
| # INTRODUZIONE # |
| ################ |
| |
| Ciao a tutti e bentornati =) |
| Innanzi tutto faccio i complimenti a Salvo`B che ha |
| scritto le lezioni 3 e 4 di queste lezioni sul Bash |
| Scripting. |
| Come esplicitato dal sommario oggi parleremo di come |
| fare dei semplici menu' utilizzando il comando 'select', |
| e su come fare dei programmi che sfruttano la linea di |
| comando (come per es. la maggior parte dei .c). |
| Preciso che oggi saro' molto breve e conciso perchè ho |
| poco tempo, sono innamorato e a casa mia sta |
| succedendo bordello (tanto per cambiare) |
| |
| ################# |
| # USIAMO SELECT # |
| ################# |
| |
| Iniziamo subito con un esempio commentato. |
| ----------- Cut Here ----------- |
| #!/bin/bash |
| |
| MENU="Email Http Quit" |
| #Questi sono i tre valori del menu', divisi da spazi. |
| select val in $MENU; do |
| #sintassi: select in |
| if [ "$val" = "Quit" ]; then |
| exit |
| elif [ "$val" = "Email" ]; then |
| echo "Resinaro@Mojodo.it" |
| elif [ "$val" = "Http" ]; then |
| echo "http://www.mojodo.it" |
| else |
| echo "Ma che cazzo dici? =)" |
| fi |
| done |
| #Notare quanto sia simile alla istruzione 'for'. |
| |
| ----------- Cut Here ----------- |
| Quando eseguiamo lo script uscira' questo: |
| Resinaro@Mojodo /lezioni/Bash# sh LezBash5.sh |
| 1) Email |
| 2) Http |
| 3) Quit |
| #? |
| |
| ``#?" vuole il numero di riferimento e poi un invio, |
| per es se voi voleste vedere la mia email, dovreste |
| scrivere 1 e poi premere invio. |
| Il ciclo continua fino a quando non fermiamo il prog, |
| (ctrl+c, ctrl+ per es.), ecco perchè conviene lo |
| stesso mettere una opzione di uscita collegata a un |
| 'exit'. |
| |
| #################### |
| # LINEA DI COMANDO # |
| #################### |
| |
| Eccolo qui.. la solita funzione fighissima di eseguire |
| un prog inserendo delle variabili direttamente nella |
| linea di comando (direttamente dopo aver scritto il |
| comando per eseguire il prog. in parole molto povere) |
| Faccio un es. |
| Resinaro@Mojodo /# tar zxvf ciao.tar.gz |
| Questo è un es di prog che sfrutta la linea di comando, |
| infatti le variabili vengono inserite nella stessa |
| riga del prog, e questo, a mio parere, è molto comodo |
| in un prog. |
| |
| Facciamo subito un programmino di esempio, commentato: |
| |
| ----- Cut Here ---- |
| #!/bin/bash |
| if [ -z "$1" ]; then |
| |
| #eccolo qua.. l'if della nostra vita =P, se dopo il |
| #comando per eseguire il prog non c'è nulla, |
| #fa stampare l'usage, e poi esce.. =) |
| |
| echo usage: sh $0 image |
| #$0 la variabile $0 sta per il nome del file |
| exit |
| fi |
| ee $1 |
| #usiamo `ee` per mostrare la variabile $1 cioè l'img. |
| ----- Cut Here ---- |
| |
| Ok.. non credo ci sia bisogno di dilungarmi più di |
| tanto. |
| Ma comunque tanto per rispondere ad alcune domande |
| che potrebbero sorgervi, faccio un altro |
| es. un pò r0xante =) |
| |
| ############################ |
| # PROGRAMMINO(I) FINALE(I) # |
| ############################ |
| |
| Come al solito vi lascio con il prog di riepilogo. |
| Questa volta però, ve ne lascio due, (non ho trovato |
| il modo di conciliare in modo proficuo le due funzioni |
| spiegate oggi), i due prog hanno la stessa funzione, |
| ma sono fatti il primo usando la funzione select, |
| e il secondo usando la linea di comando. |
| |
| --------- Tarratore.sh (Con Select) --------- |
| #!/bin/sh |
| |
| echo "«Tarratore» - By Resinaro (Resinaro@Mojodo.it)" |
| tarralo() { |
| echo -n "File da comprimere: " |
| read file |
| tar -czf ${file}.tar.gz $file |
| echo "* $file compresso in ${file}.tar.gz" |
| } |
| MENU="Tar Quit" |
| #Questi sono i tre valori del menu', divisi da spazi. |
| select val in $MENU; do |
| #sintassi: select in |
| if [ "$val" = "Quit" ]; then |
| exit |
| elif [ "$val" = "Tar" ]; then |
| tarralo |
| else |
| echo "... o 1 o 2... e che cazzo.." |
| fi |
| done |
| ----------------- Cut Here ----------------- |
| |
| --------- Tarratore.sh (Linea di Comando) --------- |
| #!/bin/bash |
| if [ -z "$1" ]; then |
| echo "«Tarratore» - By Resinaro (Resinaro@Mojodo.it)" |
| echo "usage: sh $0 file" |
| exit |
| fi |
| file=$1 |
| echo "«Tarratore» - By Resinaro (Resinaro@Mojodo.it)" |
| tar -czf ${file}.tar.gz $file |
| echo "$file compresso in $file.tar.gz" |
| rm -rf tar.out |
| -------------------- Cut Here -------------------- |
| |
| ################## |
| # COMPITI A CASA # |
| ################## |
| |
| Seguendo lo stile di c3nt0q con le lezioni di java |
| (non ancora pubblicate su Mojodo [per ora]) {Notare |
| il gioco di parentesi ahuahahua}, vi assegno un |
| compitino. Dovete modificare i prog di esempio in |
| modo che funzioni sia con 'select' che con la linea |
| di comando: nel senso che se non mettiamo niente dopo |
| il comando per far eseguire il programma, lo stesso |
| parte con 'select', se invece specificate il nome del |
| file da comprimere (consiglio di stampare l'usage da |
| linea di comando quando il prog parte con 'select'), |
| il prog funziona come il Tarratore da linea di comando. |
| Una volta finito mandare tutto a Resinaro@Mojodo.it !! |
| La soluzione la pubblichero' nella prossima lezione |
| e sarei molto felice di pubblicare un vostro lavoro |
| invece di quello che ho fatto io:) |
| |
| |
| ############### |
| # CONCLUSIONE # |
| ############### |
| |
| |
| Ok ragazzi, anche questa lezione è finita, la prossima |
| la farete con Salvo`B =) |
| Mi scuso se sono stato molto sintetico oggi, ma 1) non |
| ho ritenuto necessario dilungarmi dato che le 4 lezioni |
| precedenti vi hanno gia' permesso di prendere |
| dimistichezza com il linguaggio, 2) Non è proprio |
| giornata.. penso sempre a LEI ='(°° |
| |
| gr33tZ: |
| - Saluto Anakin, in particolare i suoi sogni e il |
| suo modo di essere.. sperando, un giorno, di diventare |
| come lui..... |
| - Il Mojodo Project, per quello che mi ha dato |
| - una persona.. o forse 100..
+----------------------------------------------------------------------+
|