Hallo, Am Fri, 19 Sep 2003, Jan Trippler schrieb:
Am Freitag, 19. September 2003 01:30 schrieb David Haller:
Am Fri, 19 Sep 2003, Jan Trippler schrieb: dh@slarty[4]: /tmp/test4 (0)$ ./test_foo.sh | grep '^Jan3' Jan3: ich bin /tmp/test4/foo.sh [..]
Hm, ist das nun gut oder schlecht? Da ich Deine Links nicht kenne ...
Ich hatte das "find" schon gemailt. Das script selbst ist '/tmp/test4/opt/blubb/bin/foo.sh'... Da fehlt quasi ein cd ins dirname des letzten symlinks...
Ich nehme mal an schlecht, weil Du nun absolute Pfadnamen verwendest. Da muss man tatsächlich noch 2 Zeilen ergänzen (ich habe das Ganze mal in ein kleines Script verpackt, dem man den Namen des aufzulösenden Links mitgibt):
ich="$1" p="`pwd`" while test -n "`readlink \"$ich\"`"; do d="`dirname \"$ich\"`" test -n "$d" && cd "$d" || exit 1 ich="`readlink \"\`basename \"$ich\"\`\"`" done d="`dirname \"$ich\"`" test -n "$d" && cd "$d" || exit 1 ich="`pwd`/`basename \"$ich\"`" cd "$p" echo "ich bin $ich" Ich habs mal kurz mit verschiedenen Kombinationen (Kette aus absoluten und relativen Pfaden mit und ohne Verzeichnisangabe) getestet, sah mir sauber aus.
Jup. Find ich gut, dass du letztlich doch die gleiche Loesung wie ich gefunden hast :) Zumindest in meinem Testfall liefert das jetzt auch die richtige Loesung... Und nun vergleiche das mal (modulo Variablennamen und Schleifenbedingung und Verpackung in eine Funktion sowie extra ``-Verschachtelung) mit meiner Version... Da ich ja eine Funktion verwende ist es auch nicht noetig, sich `pwd` zu merken. Ok, bei mir kommt noch das 'if' dazu, das, wie ich sehe ueberfluessig ist. Hier nochmal meine Version zum Vergleich: ==== find_real_name() { p="$1" while test -L "$p" do d="`dirname \"$p\"`" test -d "$d" && cd "$d" || exit 1 p="`basename \"$p\"`" test -L "$p" && { r="`readlink \"$p\"`" || exit 2; } p="`pwd`/$r" done d="`dirname \"$p\"`" test -d "$d" && cd "$d" || exit 1 p="`basename \"$p\"`" rn="`pwd`/$p" echo "$rn" } ==== Hm. Ich ueberlege gerade, warum ich am Ende des while 'p="`pwd`/$r"' verwende (mal abgesehen von der Hilfsvariablen $r)... IIRC, hab ich nen guten Grund... ;) -dnh -- 167: DAU Leute, die sich beim Falschparken selbst anzeigen. (Dietz Proepper)