Archiv verlassen und diese Seite im Standarddesign anzeigen : zufallszeichen ausgeben
oyster-manu
20.07.2004, 21:11
ich benötige für mein shellscript mehrere zufallszeichen.
cat /dev/urandom kommt nicht in frage da ich nur EIN zeichen (a-z,0-9) brauche. gibt es keinen befehl der mir eben so ein zeichen ausgibt oder muss ich mir da selber was überlegen?
perl -e '$n_ch = ord("z") - ord("a"); $r = rand($n_ch + 10.0); if($r < 10) { $ch = chr($r + ord("0")); } else { $ch = chr($r + ord("a") - 10); } print $ch;'
oyster-manu
20.07.2004, 21:56
sei mir nicht böse, aber gibt es da keine bashvariante von? ich fange gerade erst mit shellscripten an und möchte nicht schon bei den ersten schritten perl lernen.
h2owasser
20.07.2004, 22:01
dd bs=1 cbs=1 count=1 if=/dev/urandom 2> /dev/null
Wenn du ein beliebiges Zeichen brauchst. Sonst mußt du noch if-Zeugs mit awk, sed co darumbasteln.
Ist die Frage, ob shell da Sinn macht. Koennte dir sonst noch
echo 'abcdefghijklmnopqrstuvwxyz0123456789' | perl -e '$_=<STDIN>;chomp; print substr( $_, rand( length($_)), 1);'
anbieten, bzw.
perl -e '$_ = "abcdefghijklmnopqrstuvwxyz0123456789"; print substr( $_, rand( length($_)), 1);'
Das waere sicher auch als shell script umsetzbar. Allerdings halt komplizierter.
oyster-manu
21.07.2004, 09:28
ich schreibe mir dieses script nur zum lernen der "shellsprache". sinnvoll ist das script sowieso nicht :)
hier der code des ganzen scripts:
#!/bin/sh
x=0
until [ "$x" -gt 100 ]
do
head --bytes=1 /dev/urandom #gibt genau ein zeichen aus /dev/urandom aus
x=$(expr $x + 1)
echo ""
done
ps: wie kann ich die untilschleife beenden indem ich nur die taste "q" drücke?
> ps: wie kann ich die untilschleife beenden indem ich nur die taste "q" drücke?
Das kann die Shell nicht, das geht aber z.B. mit C/C++ und der ncurses Bibliothek
muesst ueber stty und die standard eingabe gehen, wenn du aus dem canonical in den ungepufferten modus wechselst. Wuerdest in c nichts anderes machen.
mfg
oyster-manu
22.07.2004, 11:29
muesst ueber stty und die standard eingabe gehen, wenn du aus dem canonical in den ungepufferten modus wechselst. Wuerdest in c nichts anderes machen.
mfg
ähh... ja... :)
zurück zum shellscript:
ich finde dass die zeichen etwas rückartig ausgegeben werden. kann man das vielleicht noch irgendwie flüssiger machen (aber bitte nur shellscript)?
echo $((RANDOM % 256))
gibt dir auch eine Zahl zwischen 0 und 255 aus. Nur, falls du sowas mal in Zukunft wieder brauchst. (:
Powered by vBulletin® Version 4.2.0 Copyright ©2013 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.