zufallszeichen ausgeben

oyster-manu

oyster-manu

toast
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?
 
Code:
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;'
 
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.
 
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
Code:
echo 'abcdefghijklmnopqrstuvwxyz0123456789' | perl -e '$_=<STDIN>;chomp; print substr( $_, rand( length($_)), 1);'
anbieten, bzw.
Code:
perl -e '$_ = "abcdefghijklmnopqrstuvwxyz0123456789"; print substr( $_, rand( length($_)), 1);'
Das waere sicher auch als shell script umsetzbar. Allerdings halt komplizierter.
 
ich schreibe mir dieses script nur zum lernen der "shellsprache". sinnvoll ist das script sowieso nicht :)
hier der code des ganzen scripts:

Code:
#!/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
 
etuli schrieb:
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. (:
 

Ähnliche Themen

Script pausieren bis Bedingung erfüllt ist

E/A-Fehler (.snapshots is not a btrfs subvolume).

"non blocking console input" wieder rückgängig machen?

Verschlüsseltes Backup-Script mit rsync

Keine grafische Oberfläche (Debian Installation)

Zurück
Oben