Как создать анимацию вращения с помощью сценария оболочки?

Я ищу сценарий, который создает анимацию вращения с использованием символов /, -, | и \.

Если вы постоянно переключаетесь между этими символами, это должно выглядеть как вращение. Как это сделать?

9
задан 15 February 2017 в 09:59

3 ответа

Использование, что сценарий:

#!/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 секунд между каждым изменением.

0
ответ дан 15 February 2017 в 09:59

Вот пример с помощью \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 для больше.

0
ответ дан 15 February 2017 в 09:59

Так как Вы явно не просите удар, немного разъема для оболочки рыбы, где это может быть решено красиво 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] все записи, но первое.

1
ответ дан 15 February 2017 в 19:59
  • 1
    Это не работает на iOS 10: " ошибка GnuTLS: Ошибка в функции получения по запросу. Не удалось соединиться с lockdownd сервисом на устройство. Попробовать еще раз. Если это все еще приводит к сбою попытку, перезагружающую Ваше устройство " – zgoda 12 October 2016 в 22:08

Другие вопросы по тегам:

Похожие вопросы: