Hallo Elmar,

Elmar W. Tischhauser, 22.09.2004 (d.m.y):

> On 22 Sep 2004 at 14:01 +0200, Christian Schmidt wrote:
> 
> > Beissen sich die Variablendeklarationen mit den "intern" von awk
> > verwendeten?
> 
> Ja. Wenn man Shellvariablen an AWK �bergeben will, muss man entweder mit
> Quotingakrobatik arbeiten oder (komfortabler) awk die Variablen per
> '-v'-Parameter �bergeben, der f�r diesen Zweck vorgesehen ist.

Ahja.

> F�r deine konkrete Problemstellung w�rde ich etwas � la
> #!/bin/sh
> ALIASFILE="aliases.ls"
> awk -F": " -v USERNAME="${1}" \
> '$2 ~ USERNAME { print $2 ", \"| vacation -A " $1 " " $2 "\"" }' $ALIASFILE
> 
> probieren. Das '~' bewirkt ein Regex-Matching, d.h. du kannst bei Bedarf
> den Skriptparameter leer lassen und somit eine Gesamt�bersicht bekommen
> oder mit einem beliebige regul�ren Ausdruck arbeiten. Wenn nat�rlich
> einige Benutzernamen als Teilstring von anderen vorkommen k�nnen, w�re
> '==' besser.

..also in der zweiten Zeile des o.a. awk-Aufrufs $2==USERNAME anstelle von 
$2 ~ USERNAME?
Es waere schon wichtig, dass awk bei Angabe von "schmidt" nicht auch
"schmidtc" hervorpult...

[einige Minuten spaeter]
...was in der Variante mit den beiden Gleichheitszeichen auch erreicht
wird:
 $ ./test2.sh schmidtc
 schmidtc, "| vacation -A Christian.Schmidt schmidtc"
Dagegen:
 $ ./test2.sh schmidt
 $

Vielen Dank, Elmar. Das ist so auf den ersten Blick genau das, was ich
gesucht habe!

> �brigens: Wenn das Leerzeichen nach dem ':' nicht garantiert ist,
> arbeitest du besser mit ":" an Stelle von ": " als Feldtrenner und
> trimmst wenn n�tig das Leerzeichen in $2 mit gsub o.�. weg.

Ich muss noch einmal nachsehen, meine aber, dass das Leerzeichen
garantiert ist. Die aliases.ls wird auf von einem anderen Skript generiert...

Gruss,
Christian
-- 
Angenehm sind die erledigten Arbeiten.
                -- Marcus Tullius Cicero (106-43 v.Chr.)

Attachment: signature.asc
Description: Digital signature

Antwort per Email an