<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>BASH Programming - Introduction HOWTO: Varie</TITLE> <LINK HREF="Bash-Prog-Intro-HOWTO-11.html" REL=next> <LINK HREF="Bash-Prog-Intro-HOWTO-9.html" REL=previous> <LINK HREF="Bash-Prog-Intro-HOWTO.html#toc10" REL=contents> </HEAD> <BODY> <A HREF="Bash-Prog-Intro-HOWTO-11.html">Avanti</A> <A HREF="Bash-Prog-Intro-HOWTO-9.html">Indietro</A> <A HREF="Bash-Prog-Intro-HOWTO.html#toc10">Indice</A> <HR> <H2><A NAME="s10">10. Varie</A> </H2> <H2><A NAME="ss10.1">10.1 Leggere l'input dell'utente con read</A> </H2> <P> In molte occasioni potresti voler richiedere l'utente un certo input, Ci sono diversi modi per raggiungere tale scopo. Eccone uno: <BLOCKQUOTE><CODE> <PRE> #!/bin/bash echo Please, enter your name read NAME echo "Hi $NAME!" </PRE> </CODE></BLOCKQUOTE> <P> Come variante, puoi ottenere valori multipli con read, questo esempio dovrebbe chiarire il concetto. <BLOCKQUOTE><CODE> <PRE> #!/bin/bash echo Please, enter your firstname and lastname read FN LN echo "Hi! $LN, $FN !" </PRE> </CODE></BLOCKQUOTE> <P> <H2><A NAME="ss10.2">10.2 Valutazione aritmetica</A> </H2> <P> Dalla riga di comando (o da una shell) prova questo: <P> echo 1 + 1 <P> Se ti aspettavi di vedere '2' sarai dispiaciuto. Che fare se vuoi che BASH processi dei numeri che hai? Ecco la soluzione: <P> echo $((1+1)) <P> Questo produrrà un output più 'logico'. Questo per valutare espressione aritmetica. Puoi ottenere lo stesso risultato con qualcosa come: <P> echo $[1+1] <P> <P> Se hai bisogno di usare le frazioni, o operazioni più complesse ("more math", ndt), o semplicemente perché ne hai voglia, puoi utilizzare bc per processare le espressioni aritmetiche. <P> Se eseguissi "echo $[3/4]" al prompt dei comandi, mi restituirebbe 0 poiché bash usa solamente interi in fase di risposta. Eseguendo "echo 3/4|bc -l", ti restituirebbe un più adeguato 0.75. <H2><A NAME="ss10.3">10.3 Trovare bash </A> </H2> <P> Da un messaggio di mike (vedi Grazie a) <P> tu usi sempre #!/bin/bash .. potresti fornire un esempio di come <P> scoprire dove si trovi bash. <P> `locate bash' è preferibile, ma non tutte le macchine hanno locate. <P> `find ./ -name bash' dalla root directory (quella indicata con /, <P> ndt) funziona, in genere. <P> Suggerimenti su dove cercare: <P> ls -l /bin/bash <P> ls -l /sbin/bash <P> ls -l /usr/local/bin/bash <P> ls -l /usr/bin/bash <P> ls -l /usr/sbin/bash <P> ls -l /usr/local/sbin/bash <P> (non me vengono in mente altri al momento. (l'ho trovata nella <P> maggior parte di questi posti in sistemi diversi). <P> Puoi provare anche 'which bash'. <H2><A NAME="ss10.4">10.4 Prendere il valore di ritorno da un programma</A> </H2> <P> Nella bash, il valore di ritorno di un programma è memorizzato in variabile speciale chiamata $?. <P> Questo mostra come catturare il valore restituito da un programma; faccio conto che la directory <I>dada</I> non esista. (Anche questo è stato suggerito da mike) <BLOCKQUOTE><CODE> <PRE> #!/bin/bash cd /dada &> /dev/null echo rv: $? cd $(pwd) &> /dev/null echo rv: $? </PRE> </CODE></BLOCKQUOTE> <H2><A NAME="ss10.5">10.5 Catturare l'output di un programma </A> </H2> <P> Questo piccolo script mostra tutte le tabelle da tutti i database (assumendo che tu abbia MySQL installato). Inoltre, considera la possibilità di modificare il comando 'mysql' per aggiungere uno username ed una password validi. <BLOCKQUOTE><CODE> <PRE> #!/bin/bash DBS=`mysql -uroot -e"show databases"` for b in $DBS ; do mysql -uroot -e"show tables from $b" done </PRE> </CODE></BLOCKQUOTE> <H2><A NAME="ss10.6">10.6 File a sorgenti multipli</A> </H2> <P> Puoi usare più di un file per volte tramite il comando source. <P> __TO-DO__ <HR> <A HREF="Bash-Prog-Intro-HOWTO-11.html">Avanti</A> <A HREF="Bash-Prog-Intro-HOWTO-9.html">Indietro</A> <A HREF="Bash-Prog-Intro-HOWTO.html#toc10">Indice</A> </BODY> </HTML>