Я ищу сценарий, который создает анимацию вращения с использованием символов /
, -
, |
и \
.
Если вы постоянно переключаетесь между этими символами, это должно выглядеть как вращение. Как это сделать?
Использование, что сценарий:
#!/bin/bash
chars="/-\|"
while :; do
for (( i=0; i<${#chars}; i++ )); do
sleep 0.5
echo -en "${chars:$i:1}" "\r"
done
done
while
бесконечные выполнения цикла. for
цикл выполняет канавку каждый символ строки, данной в $chars
. echo
печать символ, с возвратом каретки \r
, но без разрыва строки -n
. -e
силы отзываются эхом для интерпретации escape-последовательностей такой как \r
. Существует задержка 0,5 секунд между каждым изменением.
Вот пример с помощью \b
, который говорит эмулятору терминала перемещать курсор один столбец налево, чтобы продолжать перезаписывать тот же символ много раз.
#!/usr/bin/env bash
spinner() {
local i sp n
sp='/-\|'
n=${#sp}
printf ' '
while sleep 0.1; do
printf "%s\b" "${sp:i++%n:1}"
done
}
printf 'Doing important work '
spinner &
sleep 10 # sleeping for 10 seconds is important work
kill "$!" # kill the spinner
printf '\n'
См. BashFAQ 34 для больше.
Так как Вы явно не просите удар, немного разъема для оболочки рыбы, где это может быть решено красиво IMO:
set -l symbols ◷ ◶ ◵ ◴
while sleep 0.5
echo -e -n "\b$symbols[1]"
set -l symbols $symbols[2..-1] $symbols[1]
end
В этом случае, symbols
переменная типа массив и содержание, если она вращается/смещается, потому что $symbols[2..-1]
все записи, но первое.