Ekkard Gerlach
Bernd Brodesser wrote:
Siehe hierzu man getopt oder man bash.
Danke. Habe ich gemacht. Werde aber nicht schlau: aus man bash:
getopts optstring name [args] getopts is used by shell procedures to parse posi tional parameters. optstring contains the option letters to be recognized;
und weiter: if a letter is followed by a colon, the option is expected to have an argument, which should be separated from it by white space.
Was "optstring" sein soll steht nirgendwo! Vielleicht -i -5 ... ,
Doch es steht genau da, wenn auch etwas knapp. Dieser optstring enthaelt einfach nacheinander die einzelnen Buchstaben (ohne das '-' davor), die als Optionen zulaessig sind. Und wenn eine Option noch ein Argument hat, dann ist hinter dem jeweiligen Buchstaben noch ein ':' einzufuegen. Zum Beispiel hat fuer ein Kommando mit der Syntax bla [-ail] [-o output] file... der optstring folgendes Aussehen: "ailo:". Damit sind dann z.B. die folgenden Aufrufe moeglich: bla -i blub bla -al -o bla.out blub fasel bla -a -i blub ... Wie das Auslesen funktioniert, ist eigentlich ausreichend beschrieben: Einfach in einer Schleife immer wieder aufrufen, bis der Rueckgabewert das Ende der Optionen signalisiert. Dann die verbleibenden Argumente verarbeiten. Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org - eilert@linuxfreak.com http://www.informatik.uni-bremen.de/~eilert/ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Eilert Brinkmann schrieb am 16.Jun.2000:
Ekkard Gerlach
wrote:
[getopts]
Was "optstring" sein soll steht nirgendwo! Vielleicht -i -5 ... ,
Doch es steht genau da, wenn auch etwas knapp. Dieser optstring enthaelt einfach nacheinander die einzelnen Buchstaben (ohne das '-' davor), die als Optionen zulaessig sind. Und wenn eine Option noch ein Argument hat, dann ist hinter dem jeweiligen Buchstaben noch ein ':' einzufuegen. Zum Beispiel hat fuer ein Kommando mit der Syntax
bla [-ail] [-o output] file...
der optstring folgendes Aussehen: "ailo:". Damit sind dann z.B. die folgenden Aufrufe moeglich:
bla -i blub bla -al -o bla.out blub fasel
bla -alobla.out blub fasel würde das selbe Ergebnis zeitigen.
bla -a -i blub
Dabei sind dann blub und auch fasel keine Options, sondern Argumente.
Wie das Auslesen funktioniert, ist eigentlich ausreichend beschrieben: Einfach in einer Schleife immer wieder aufrufen, bis der Rueckgabewert das Ende der Optionen signalisiert. Dann die verbleibenden Argumente verarbeiten.
Am besten while getopts ailo: opt do if [ opt == o ] then oarg=$OPTARG fi irgendwelche Aktionen. done Bernd -- Probleme mit dem Drucker? Schon die Druckercheckliste beachtet? http://localhost/doc/sdb/de/html/drucker-howto.html | Auch lesenswert: Oder schon das Drucker-HOWTO gelesen? | man lpr file://usr/doc/howto/de/DE-Drucker-HOWTO.txt.gz | Zufallssignatur 3 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Dank an Melchior, Bernd und Eilert, hier mein Skripte gg. Jemand noch Verbesserungsvorschläge? 1. mit getopts: (Parameter müssen am anfang eingegeben werden, z.b gg -i sendm * #!/bin/bash if getopts i opt then #echo "opt: " $opt if [ $opt == i ] then grep $@|sed "s/$2/^[[31;1m&^[[m/gi" else grep $@|sed "s/$2/^[[31;1m&^[[m/g" fi else grep $@|sed "s/$1/^[[31;1m&^[[m/g" fi 2. von Melchior: hier das Skipt ohne getops: Die option -i ist beim sed immer dabei, kann beim Aufruf auch hinten stehen, z.B. gg sendm * -i . #!/bin/bash trap "echo -en '\\033[m'" 0 grep $@|sed "s/$1/^[[31;1m&^[[m/gi" Gruss ekkard Bernd Brodesser wrote:
Am besten
while getopts ailo: opt do
if [ opt == o ] then oarg=$OPTARG fi
irgendwelche Aktionen.
done
Eilert Brinkmann wrote:
Was "optstring" sein soll steht nirgendwo! Vielleicht -i -5 ... ,
Doch es steht genau da, wenn auch etwas knapp. Dieser optstring enthaelt einfach nacheinander die einzelnen Buchstaben (ohne das '-' davor), die als Optionen zulaessig sind. Und wenn eine Option noch ein Argument hat, dann ist hinter dem jeweiligen Buchstaben noch ein ':' einzufuegen. Zum Beispiel hat fuer ein Kommando mit der Syntax
bla [-ail] [-o output] file...
der optstring folgendes Aussehen: "ailo:". Damit sind dann z.B. die folgenden Aufrufe moeglich:
bla -i blub bla -al -o bla.out blub fasel bla -a -i blub ...
Wie das Auslesen funktioniert, ist eigentlich ausreichend beschrieben: Einfach in einer Schleife immer wieder aufrufen, bis der Rueckgabewert das Ende der Optionen signalisiert. Dann die verbleibenden Argumente verarbeiten.
--------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* On Sat, Jun 17, 2000 at 01:54:47PM +0200, Ekkard Gerlach wrote:
Dank an Melchior, Bernd und Eilert,
hier mein Skripte gg. Jemand noch Verbesserungsvorschläge?
Ah, jetzt funzt es auch mit pipen nach less ;) Ich hätte einen, wenn Interesse. Machen wir doch mal eine kl. Hilfe die im Notfall die syntax ausgibt. ........dachte ich und stelle fest das die bash builtins ausgegeben werden. Oder kann man das schwer umgehen? Wo ist denn mein Denkfehler?? #!/bin/bash # colgrep.sh # # syntax: # colgrep.sh [suchwort] [-nZeilen] [SuchPfad] # ## function help function help { cat <<-EOF Aufruf : `basename $0` colgrep.sh [suchwort] [-nZeilen] [SuchPfad] Gibt die Ausgabe von grep in rot aus -h, --help zeigt diese Hilfe an EOF } # test fuer help if [ $# -eq 0 ]; then help exit 1 elif [ $1 = -h -o $1 = --help ]; then help exit 0 fi #### anfang des eigentl. scriptes if getopts i opt then #echo "opt: " $opt if [ $opt == i ] then grep $@|sed "s/$2/^[[31;1m&^[[m/gi" else grep $@|sed "s/$2/^[[31;1m&^[[m/g" fi else grep $@|sed "s/$1/^[[31;1m&^[[m/g" fi #EOF Gruß, Clemens -- sig_04 Du willst wissen wo eine bestimmte Programmdatei und zugehörig. Doku steckt? Beispiel: $ whereis pppd [Info: man whereis] pppd: /usr/sbin/pppd /usr/man/man8/pppd.8.gz ------------------------------------------------ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Clemens Wohld schrieb am 17.Jun.2000:
#### anfang des eigentl. scriptes if getopts i opt then #echo "opt: " $opt if [ $opt == i ] then grep $@|sed "s/$2/^[[31;1m&^[[m/gi" else
Nach hierhin wird nie verzweigt werden, denn wenn getopts eine 0, also true, zurückgibt, dann schreibt es in opt die Option rein, die es gefunden hat. Es steht hier aber nur i zur verfügung, ergo wird hier zwangsläufig i drinstehen.
grep $@|sed "s/$2/^[[31;1m&^[[m/g" fi else grep $@|sed "s/$1/^[[31;1m&^[[m/g" fi
Wenn Du irgendwelche andere Options mitgibst, gibt es Probleme. Du solltest schon alle grep-Options abfangen, die kannst Du sammeln und grep wieder mitgeben. Eigene Options wäre für unterschiedliche Farben sinnvoll. $@ und $* ist das Selbe. Es werden die Argumente nach Whitespace aufgeteilt. Mit "$*" werden alle Argumente zusammengefaßt und als ein Argument weitergegeben. Mit "$@" werden die Argumente so weitergegeben, wie sie gekommen sind. Die " sind hier wichtig. Bernd -- Alle meine Signaturen sind rein zufällig und haben nichts mit dem Text oder dem Schreiber zu tun, dem ich antworte. Falls irgendwelche Unrichtigkeiten dabei sein sollten, so bedauere ich das. Es wäre nett, wenn Du mich benachrichtigen würdest. |Zufallssignatur 0 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (4)
-
B.Brodesser@online-club.de
-
c.wohld@ndh.net
-
eilert@Informatik.Uni-Bremen.DE
-
ml_gerlach@nikocity.de