martedì 12 novembre 2013

Giocare a tombola con bash

Dalle mie parti hanno incominciato a giocare a Tombola.

Infatti mi ha chiamato Ciro, tutto allarmato, chè non riusciva a trovare il sacchetto coi numeri.


Alla fine abbiamo risolto con uno script abbozzato nel giro di poco tempo. Se avete un'idea migliore da proporre, non fatevi scrupoli.

#!/bin/bash

a=`for i in {1..90}; do echo $i; done | shuf`
clear
for i in $a 
do
    echo -e "\v\t" $i
    echo -e "\v" "Premere invio per continuare, Ctrl+C per uscire dallo script"
    read
    echo ""
    clear
done
exit 0
Posto che avete salvato lo script, "tombola.sh", nella directory Scaricati,

$ cd Scaricati

$ chmod +x tombola.sh

$ ./tombola.sh

Alla prossima

6 commenti:

  1. a=`shuf -i 1-90` è più compatto.
    Altrimenti un array da cui estrarre un elemento a caso ($RANDOM%${#array}), visualizzarlo e cancellarlo (unset) per evitare estrazioni doppie. Ma mi sembra una complicazione inutile...

    RispondiElimina
  2. Carino come pensiero.. non conoscevo il comando shuf

    RispondiElimina
  3. Bello! Neanch'io conoscevo shuf.
    Una piccola modifica alla modifica proposta da extendedreality: a=$(shuf -i 1-90)
    L'uso di $() al posto di `` è raccomandato da una ventina d'anni, prima o poi ci faccio un post perché nessuno lo usa. Sempre che mi ricordi bene e sia davvero così.

    RispondiElimina
    Risposte
    1. Avevo letto da qualche parte la raccomandazione di usare $() per compatibilità e portabilità mi pare. Per abitudine uso quasi sempre i backtick che bash digerisce bene. Forse altre shell non fanno altrettanto.
      Comunque un post è bene accetto. Come si dice, "repetita iuvant":
      while true; do echo 'Usate $()!'; done
      Toh, ho scritto il post!

      Elimina
  4. Non vorrei guastare un po' la situazione..ma..un post era già stato creato tramite il Progetto Bash. Il post fa riferimento alla parta pratica del Progetto curata da me ;).

    http://toshidex.org/2011/06/16/progetto-bash-introduzione-pratica-%E2%80%93-parte-iv/

    RispondiElimina
    Risposte
    1. Il mitico Project bash...cavolo, dobbiamo tornare a scrivere. Quando torno da Brescia si ricominicia, ok?? :))

      Elimina