Archiv verlassen und diese Seite im Standarddesign anzeigen : Signatur Script
tach!
ich habe mir ein dokument mit Singnaturen für meinen Mailaccount angelegt. Nun wollte ich per Shell Skript der datei .singnatur (Signaturdatei für elmo) immer zufällig eine Zeile übergeben.
Wie stelle ich das am dümmsten an? Ich weiß nicht wie man eine zufallszahl zw. 1 und x bekommt und wie man diese zeile dan rausnehmen soll (vieleicht mit cat ... ?).
Thx
Marz
michael.sprick
29-11-2004, 21:06
Ich weiß auch gerade nicht, wie man mit einer pure bsah Lösung an eine Zufallszahl kommt... aber evtl. ist folgendes ein Workaround:
#!/bin/bash
Zufallszahl=`perl -e "print int rand(10)"`;
Zeile=0
cat signaturen.txt | while read line; do
if [ "$Zeile" -eq "$Zufallszahl" ]; then
echo "$line"
fi
Zeile=`expr "$Zeile" + 1`
done
in der Zeile Zufallszahl=`....` musst Du die 10 dann halt tauschen gegen die Anzahl der Zeilen in Deiner Signaturen Datei...
geht aber sicher eleganter ;)
peschmae
29-11-2004, 21:29
echo $RANDOM liefert ne Zufallszahl (afair zwischen 0 und 32767 oder so) - die könntest du dann mit bc oder expr bearbeiten.
Für Zehn Zeilen sowas:
expr $RANDOM % 10
MfG Peschmä
P.S. bevorzugt zwar leicht die Zahlen 0 - 7 bzw. benachteiligt 8 und 9, aber ich glaub das kannst du vernachlässigen ;)
tictactux
30-11-2004, 03:52
Hi,
da schon ein leicht perliger Lösungsansatz genannt wurde,
hier ein kleiner (IMHO pfiffiger) Signaturgenerator (Quellangabe im Code)
der ursprünglich auf den 'Zufallsgenerator' fortune aufsetzt,
aber einfach (s. Markierung) erweiterbar ist (in Perl wie durch externen
Skriptaufruf).
Benutzung: Skript als Hintergrundprozeß starten.
Es erstellt im Home-Verzeichnis den FIFO .signature, der nach jedem
Auslesen aktualisiert wird.
#!/usr/bin/perl -w
# based on Tom Christiansen's FMTYEWTK example
chdir; # go home
$FIFO = '.signature';
$ENV{PATH} .= ":/etc:/usr/games";
while (1) {
unless (-p $FIFO) {
unlink $FIFO;
system('mknod', $FIFO, 'p')
&& die "can't mknod $FIFO: $!";
}
# next line blocks until there's a reader
open (FIFO, "> $FIFO") || die "can't write $FIFO: $!";
print FIFO "Mickey Mouse <mouse@work.edu>\n", # fester Adressteil
`fortune -s -m Disney`; # <-eigener externer Befehl
close FIFO;
sleep 2; # to avoid Sig duplicates
}
Hoffe, dies paßt noch zum Thema,
Schönen Gruß,
Wolfgang
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.