Am Samstag, 13. Dezember 2003 01:54 schrieb David Haller: Hallo David!
Am Sat, 13 Dec 2003, Al Bogner schrieb:
Wie löse ich folgendes Beispiel
NAMEdb="Hans Huber"
NAMEWORT1=`echo "$NAMEdb" | cut -f 1 -d" "` NAMEWORT2=`echo "$NAMEdb" | cut -f 2 -d" "`
NAME1="$NAMEWORT1" "$NAMEWORT2" # Hans Huber NAME2="$NAMEWORT2" "$NAMEWORT1" # Huber Hans
OPTIONS="$NAME1 $NAME2 Abbruch"
select opt in $OPTIONS; do if [ "$opt" = "$NAME1" ]; then echo $NAME1 exit -1 elif [ "$opt" = "$NAME2" ]; then echo $NAME2 exit -1 else echo unbrauchbar exit -1 fi done
$ ( FS="`echo -en '\x06'`"; NAME1="Hans Huber"; NAME2="Huber Hans"; OPTIONS="${NAME1}${FS}${NAME2}${FS}Abbruch"; OIFS="${IFS}"; IFS="${FS}"; select opt in $OPTIONS; do echo $opt; break; done; IFS="${OIFS}"; )
Und da waere noch mein "xreadline", das bietet noch einen editierbaren default an... Das bietet sich v.a. an, wenn man einen default editieren moechte.
Schön langsam habe ich hier Anforderungen, die wirklich nach einer anderen Programmiersprache rufen. In diesem Fall ist es aber so, dass es zu 98% nicht interaktiv ist und die Auswahl nur beim Eintreffen einer Bedingung erscheint, und wie bereits geschrieben, das Script läuft ja schon und muß nur erweitert werden.
$ answer=`xreadline "prompt: " "/tmp/xreadline.tmp"` && echo "$answer" prompt: /tmp/foo.tmp /tmp/foo.tmp
[hier stand hinter "prompt: " zuerst das '/tmp/xreadline.tmp'...]
Dabei stehen praktisch alle Editiermoeglichkeiten der libreadline wie Alt+Backspace, Strg+a, Strg+u usw. zur Verfuegung ;)
Bei Interesse kruschtel ich die Quellen mal raus, seh sie nochmal durch, und stell die online oder so ;)
Ja, das interessiert mich schon. Da es zu o.a. Beispiel passieren könnte, dass es Huber Johann heißen soll, was manuell zu editieren wäre. Ich hatte mir o.a. Anforderung auch schon mit read überlegt, wollte aber einfach mal was mit select machen. Ich habe der Einfachheit nur Vorname Nachname gewählt, tatsächlich könnten aber bis zu 4 Wörter in der Variable stehen, die variiert werden müssen. Al