[it.fan.marco-ditri] roulette russa
Marco Bisetto
blug@lists.linux.it
Tue, 15 Apr 2003 17:05:25 +0000
>[ $[$RANDOM % 6] = 0 ] && rm -rf /
[ $(($RANDOM % 6)) = 0 ] && rm -rf /
Mi sono chiesto se quanto sopra potesse funzionare in sh, o se $RANDOM
fosse una variabile specifica di bash.
In realta` ho scoperto (man ash) che $RANDOM non e` POSIX standard,
quindi anche la seconda funziona con bash, ma non con una generica sh.
[ $(($(head -c 1 /dev/random |od -d -An) % 6)) = 0 ] && rm -rf /
Cosi` si ottiene qualcosa che funziona su Linux con una shell
standard.
Per non far torto ai matematici ammetto che la mia versione non e`
perfettamente equivalente, ma comporta maggior rischio della
precedente a causa dell' errore di approssimazione. Tuttavia mi pareva
che prendere piu` di un byte da /dev/random per una simile faccenda
fosse uno spreco di entropia del sistema.
m