BASH (Bourne Again Shell) Random függvény, hogyan?
Sziasztok!
Szeretném megkérdezni a profikat!
van pl 10 db függvényem!
Hogyan tudom megcsinálni hogy ebből a 10-ből véletlenszerűen futtassa le a script a függvényeket?
Esetleg még azt hogy ha mind a 10 lefutott akkor lépjen ki.
Igazából leírtad már, hogy kéne.
Most mondtad, van 10 darab függvényed, randomizálsz egy számot, ezekből kéne választani. Többszörös elágaztatás aka. case.
Azt meg tárold el, hogy melyik futott már le, és ha már mind lefutott akkor kilépsz.
Azt hiszem, ha leírok halálpontosan mindent, nem segítek neked.
De nem tudom használni a random függvényt...ez itt a gond :)
Azt hiszem $RANDOM a neve, de ebben sem vagyok biztos!
Segítenél?
A random függvény egy 0 és egy 1 közötti számot köp ki, bár 1-et sosem adhat. Felszorzod tízzel, veszed az egészrészét, így a számok 0 és 9 között változhatnak. Beteszed egy változóba, legyen ez r. Ezután csinálsz egy elágaztatást, amiben felsorolod az egyes lehetőségeket:
case r=0 f0 break;
case r=1 f1 break;
...
a függvényeket meg megírod külön.
googlebe: bash random
A case meg úgy nem fog menni, nem az a szintaxisa.
case $(($RANDOM*9/32767)) in
0*) f0;;
1*) f1;;
...
9*) f9;;
*) echo "Gáz van, egyest kapok a feladatra!";;
esac
Na jó, a könnyebbik végén fogva meg a dolgot, azaz ha egy függvény többször is futhat:
fuggvenyek="0123456789"
while [ ! "x$fuggvenyek" = "x" ]; do
let "a = $RANDOM * 9 / 32767"
case $a in
0*) f0; fuggvenyek=${fuggvenyek/$a/};;
1*) f1; fuggvenyek=${fuggvenyek/$a/};;
2*) f2; fuggvenyek=${fuggvenyek/$a/};;
...
9*) echo $a; fuggvenyek=${fuggvenyek/$a/};;
*) echo "Gáz van, egyes!"; exit 1;;
esac
done
Bocs, a 9*) sor helyesen:
9*) f9; fuggvenyek=${fuggvenyek/$a/};
Vagy egy másik megközelítés, de 2 db függvénnyel, az egyszerűség kedvéért:
nulladikfuggveny () {
echo "nulladik fuggveny fut"
}
elsofuggveny () {
echo "elso fuggveny fut"
}
f[0]="nulladikfuggveny"
f[1]="elsofuggveny"
fuggvenyek="01"
while [ ! "x$fuggvenyek" = "x" ]; do
let "a = $RANDOM * 2 / 32767"
${f[$a]}
fuggvenyek=${fuggvenyek/$a/}
done
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!