Shell Script: No sé qué hacer

Publicado el Lunes, 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]

  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

  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

  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]}"

  1. 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

Toasty!