This commit is contained in:
Mihail Vasiliev 2023-01-29 16:08:56 +00:00 committed by GitHub
commit 6e5d859eac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 75 additions and 0 deletions

View File

@ -2127,6 +2127,41 @@ done
printf '\n'
```
You may also consider using unicode characters to draw a more granular progress bar:
**Example Function:**
```sh
function progress () {
local symbols=(" " "\u258F" "\u258E" "\u258D" "\u258C" "\u258B" "\u258A" "\u2589" "\u2588")
local n=$(($1/8))
local m=$(($1%8))
local i=0
local k=$(($2/8))
for((i=0;i<n;i++));do
echo -ne "${symbols[8]}"
done
echo -ne "${symbols[$m]}"
for((i=n+1;i<=k;i++));do
echo -ne " "
done
echo "$1 / $2"
}
```
**Example Usage:**
```shell
for ((i=0;i<=100;i++)); do
# Pure bash micro sleeps (for the example).
(:;:) && (:;:) && (:;:) && (:;:) && (:;:)
# Print the bar.
progress "$i" "100"
done
printf '\n'
```
## Get the list of functions in a script
```sh

View File

@ -180,6 +180,41 @@ done
printf '\n'
```
You may also consider using unicode characters to draw a more granular progress bar:
**Example Function:**
```sh
function progress () {
local symbols=(" " "\u258F" "\u258E" "\u258D" "\u258C" "\u258B" "\u258A" "\u2589" "\u2588")
local n=$(($1/8))
local m=$(($1%8))
local i=0
local k=$(($2/8))
for((i=0;i<n;i++));do
echo -ne "${symbols[8]}"
done
echo -ne "${symbols[$m]}"
for((i=n+1;i<=k;i++));do
echo -ne " "
done
echo "$1 / $2"
}
```
**Example Usage:**
```shell
for ((i=0;i<=100;i++)); do
# Pure bash micro sleeps (for the example).
(:;:) && (:;:) && (:;:) && (:;:) && (:;:)
# Print the bar.
progress "$i" "100"
done
printf '\n'
```
## Get the list of functions in a script
```sh

View File

@ -189,6 +189,11 @@ test_bar() {
assert_equals "${result//$'\r'}" "[----- ]"
}
test_progress() {
result="$(progress 13 100)"
assert_equals '█▋ 13 / 100'
}
test_get_functions() {
IFS=$'\n' read -d "" -ra functions < <(get_functions)
assert_equals "${functions[0]}" "assert_equals"