Danke, klappt super, aber wenn ich ehrlich bin, habe ich die
Fallunterscheidung nicht so ganz verstanden, kannst Du dazu
nochmal ne kurze Zeile schreiben?
case "$0" in
/\* ) MyFullPathName="$0" ;;
./\* ) MyFullPathName="$PWD/${0#./}" ;;
\* ) MyFullPathName="$PWD/$0";;
esac
Das Case-Statement vergleicht $0 nacheinander mit den Mustern „/*“, „./*“ und „*“, und liefert den vollständigen Pfad in MyFullPathName.
Fall 1: $0 beginnt mit „/“. $0 enthält also den kompletten Pfad. Nichts ist zu tun
Fall 2: $0 beginnt mit „./“. $0 enthält eine relative Pfadangabe, d.h. relativ zum aktuellen Verzeichnis. Entferne das „./“ am Anfang und ergänze das Ergebnis mit pwd
zum kompletten Pfad.
Hinweis: # in den geschweiften Klammern enfernt die nachfolgende Zeichenfolge vom Anfang der Variablen (könnte man auch mit ${0:2} machen). Für Details: RTFM, man bash, Abschnitt Parameter Expansion.
Fall 3: Es bleibt nur noch dein Fall eines Dateinamens ohne Pfad übrig. Ergänze diesen durch pwd
zum vollständigen Pfad.
Gruß
Rainer