## POSIX compliant function to replace dirname # ShellDorado dirname() { _dirname "$1" && printf "%s\n" "$_DIRNAME" } _dirname() { _DIRNAME=$1; strip_trailing_slashes; case $_DIRNAME in "") _DIRNAME='/' return ;; */*) _DIRNAME="${_DIRNAME%/*}" ;; *) _DIRNAME='.' ;; esac; strip_trailing_slashes; } strip_trailing_slashes () { while [ "${_DIRNAME%/}" != "$_DIRNAME" ]; do _DIRNAME=${_DIRNAME%/}; done } dirname "$@"