sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #89091
Re: Finde stien til et shellscript
Jeg har haft noget der ligner samme opgave, og har efterhånden fået
strikket følgende sammen:
----> abspath.sh <----
#!/bin/bash
#
# Navn : AbsolutePath
# Kaldes: AbsolutePath <filnavn>
# Formål: At give den fuldt kvalificerede path for den angivne fil.
# Hvis der ikke angives en fil, så bruges det kaldende script.
#
function absolute_path
{
ABSFILE="${1:-$0}"
{
if [[ "${ABSFILE#/}" = "$ABSFILE" ]]; then
echo ${PWD}/$ABSFILE
else
echo $ABSFILE
fi
} | sed '
:a
s;/\./;/;g
s;//;/;g
s;/[^/][^/]*/\.\./;/;g
ta'
unset ABSFILE
}
BINDIR=$( dirname $( absolute_path ) )
----> abspath.sh <----
----> test.sh <----
#!/bin/bash
. abspath.sh
echo BINDIR=${BINDIR}
----> test.sh <----
Jeg synes ikke selv jeg støder ind i flere grænsetilfælde, bortset fra
når man forsøger at finde scriptets eget navn EFTER man er skiftet rundt
i kataloger.
Eksempel:
cd ..
absolute_path
Ovenstående vil nu give et forkert svar på scriptets eget navn, men man
kan jo heller ikke mere stole på $0, så det kan jo gå lige op.
Med venlig hilsen
Bjørn Bille Højte
References