Shell Script: No sé qué hacer

Publicado el 29 de septiembre de 2008

Elrohir, dejó el siguiente shell script en el foro de programación. Para esos días en que no sabemos qué hacer. Se ingresan 3 opciones, y el script elige cuál hacer, inspirado en la película Chaos Theory:

#!/bin/bash
sugerido=$[$RANDOM % 3]
echo "Opcion 1?";read op1;
echo "Opcion 2?";read op2;
echo "Opcion 3?";read op3;
 
clear;
 
if [ $sugerido -eq 0 ];
then
   echo "Hacer ";
   echo $op1;
fi
if [ $sugerido -eq 1 ];
then
        echo "Hacer ";
   echo $op2;
fi
if [ $sugerido -eq 2 ];
then
        echo "Hacer ";
   echo $op3;
fi

12 comentarios en este post

Feed de comentarios
  1. Avatar

    hugo_dc 30 septiembre. 2008 - 13:28

    Como en mi trabajo no tengo linux:

    import random
    import sys
     
    try:
    	opcion1 = sys.argv[1]
    	opcion2 = sys.argv[2]
    	opcion3 = sys.argv[3]
    except:
    	print "Uso:nn"
    	print "python " + sys.argv[0] + "   nn"
    	exit()
     
    res = random.randint(1,3)
     
    if res==1:
    	print "Hacer: ", sys.argv[1]
    if res==2:
    	print "Hacer: ", sys.argv[2]
    if res==3:
    	print "Hacer: ", sys.argv[3]

    Firefox 3.0.3 Windows XP
  2. Avatar

    Francisco Castro 1 octubre. 2008 - 00:47

    Te recomendaría que aprendas a usar la estructura de control case, eso te simplificaría la vida significativamente:

    case $sugerido in
      0) echo "Hacer $op1"
      1) echo "Hacer $op2"
      2) echo "Hacer $op3"
    esac

    Konqueror 3.5 Debian GNU/Linux
  3. Avatar

    maeghith 4 octubre. 2008 - 10:22

    Un poco más sofisticado (pero no mucho más largo):

    cuantas=${1:-3}
     
    for ((i=1; $i<=$cuantas; i=$i+1)); do
            read -p "opcion $i? " op[$i];
    done
     
    echo -n "Haz: ";
    echo ${op[ $[$RANDOM % $cuantas]+1 ]};

    pregunta las veces que quieras pasandole un parámetro (“./script.sh 2” pregunta 2 veces), sin parámetros preguntará 3 veces

    Camino 1.6.4 Mac OS
  4. Avatar

    Victor Herrera 24 abril. 2009 - 02:30

    No he probado el codigo; pero a grandes rasgos tenia que quedar algo asi en ruby:

    Perdon q no me quedara con tres opciones, pero la mala costumbre de hacer lo mas general posible el script; espero funcione, jeje

     
    x=rand(ARGV.length)
    puts "Hacer : #{ARGV[x]}"

    Firefox 3.0.4 GNU/Linux
  1. WordPress Un poco Geek » Blog Archive » ¿Qué hacer? en C++ | 2 octubre. 2008 - 21:29

    […] idea se ha iniciado en los foros de Picando Codigo (con un script de shell en bash), después fernando lo ha puesto en su blog. Unos días más tarde, hugo_dc lo ha pasado en python y ahora, yo lo he escrito en […]

Dejar un comentario

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.

Toasty!