bible: really fix dirname
This commit is contained in:
parent
4a6b172ba1
commit
49bd538c26
|
@ -1067,11 +1067,11 @@ Alternative to the `dirname` command.
|
|||
dirname() {
|
||||
# Usage: dirname "path"
|
||||
dir=${1%%/}
|
||||
dir=${dir%/*}
|
||||
|
||||
[[ $dir ]] || dir=//
|
||||
[[ $dir == */* ]] || dir=.
|
||||
[[ $1 == */* ]] || dir=.
|
||||
|
||||
printf '%s\n' "${dir%/*}"
|
||||
printf '%s\n' "${dir:-/}"
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -10,11 +10,11 @@ Alternative to the `dirname` command.
|
|||
dirname() {
|
||||
# Usage: dirname "path"
|
||||
dir=${1%%/}
|
||||
dir=${dir%/*}
|
||||
|
||||
[[ $dir ]] || dir=//
|
||||
[[ $dir == */* ]] || dir=.
|
||||
[[ $1 == */* ]] || dir=.
|
||||
|
||||
printf '%s\n' "${dir%/*}"
|
||||
printf '%s\n' "${dir:-/}"
|
||||
}
|
||||
```
|
||||
|
||||
|
|
14
test.sh
14
test.sh
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env bash
|
||||
# shellcheck source=/dev/null
|
||||
# shellcheck source=/dev/null disable=2178,2128
|
||||
#
|
||||
# Tests for the Pure Bash Bible.
|
||||
|
||||
|
@ -117,6 +117,18 @@ test_count() {
|
|||
test_dirname() {
|
||||
result="$(dirname "/home/black/Pictures/Wallpapers/1.jpg")"
|
||||
assert_equals "$result" "/home/black/Pictures/Wallpapers"
|
||||
|
||||
result="$(dirname "/")"
|
||||
assert_equals "$result" "/"
|
||||
|
||||
result="$(dirname "/foo")"
|
||||
assert_equals "$result" "/"
|
||||
|
||||
result="$(dirname ".")"
|
||||
assert_equals "$result" "."
|
||||
|
||||
result="$(dirname "/foo/foo")"
|
||||
assert_equals "$result" "/foo"
|
||||
}
|
||||
|
||||
test_basename() {
|
||||
|
|
Loading…
Reference in New Issue