Hallo Andreas, Andreas Loesch <[EMAIL PROTECTED]> wrote: > Am Freitag, 10. Februar 2006 15:08 schrieb Joerg Sommer: >> Andreas Loesch <[EMAIL PROTECTED]> wrote: > >> genauer Posix Shell. Den Bash-Dialekt zu >> verwenden erachte ich als hochgradig unportabel und die Bash ist >> _langsam_. > > hmm, kann ich nicht beurteilen, aber man bash sagt > <quote> > Bash is intended to be a conformant implementation of the IEEE POSIX > Shell and Tools specification (IEEE Working Group 1003.2). > </quote>
Richtig, bash ist eine Obermenge von Posix. Also kompatibel ist sie, aber wenn du Bash-Elemente wie Arrays oder [[]] verwendest, kannst du dein Skript nicht mehr mit anderen Shells verwenden. Für dich alleine stört das nicht, aber mir sind schon einige postinstall- oder init-Skript um die Ohren geflogen, weil /bin/sh bei mir nicht die Bash ist. Die Spezifikation solltest du unter http://www.opengroup.org/ finden. > und Folgefrage, welche Linux-Shell wäre denn Deiner Meinung nach am > Posix kompatibelsten Kompatibel ist die Bash, aber nicht gerade schnell $ /usr/bin/time -p bash prim.sh 1000 [...] real 1.75 user 1.71 sys 0.02 $ /usr/bin/time -p dash prim.sh 1000 [...] real 0.45 user 0.44 sys 0.00 $ cat prim.sh #!/bin/sh set -e LAST=${1:-100} primes="" i=1 while i=$(($i+1)) && [ $i -le $LAST ]; do for p in $primes; do if [ $(( $i % $p )) -eq 0 ]; then # i=$(($i+1)) continue 2; fi done primes="$primes $i" # i=$(($i+1)) done echo 1 $primes >> > aber der Einsatz von expr müsste das doch auch für die Shells unter >> > den "großen" Unixen fit machen, oder? so dass das als kompatible >> > Variante evtl. noch interessant wäre. >> >> Der Witz ist, dass die Variante mit expr portabler *seien könnte*, >> als das Bash-Kram. Jedoch gibt es kein "match" für expr. Der korrekte >> Ausdrück wäre: expr "$A" : '.*\.\(.*\)' > > hmm, aber mein man expr sagt: > ZKETTE : REGEXP > verankerte Mustererkennung von REGEXP in ZKETTE > > match ZKETTE REGEXP > dasselbe wie ZEICHENKETTE : REGEXP Ah ja, ich hab match auch im Standard gefunden: The use of string arguments length, substr, index, or match produces unspecified results. Schöne Grüße, Jörg. -- Ein Optimist ist in der Regel ein Zeitgenosse, der ungenuegend informiert ist. (John B. Priestley) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)