← Back to team overview

sslug-teknik team mailing list archive

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