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