如何使用shell脚本创建旋转动画?

Ano*_*pus 11 command-line bash scripts animations

我要寻找的是使用字符创建一个旋转动画的脚本/-|\

如果您在这些字符之间不断切换,它应该看起来像在旋转。如何制作这个?

cha*_*aos 22

使用该脚本:

#!/bin/bash

chars="/-\|"

while :; do
  for (( i=0; i<${#chars}; i++ )); do
    sleep 0.5
    echo -en "${chars:$i:1}" "\r"
  done
done
Run Code Online (Sandbox Code Playgroud)

while循环运行无限。在for循环运行低谷中给出的字符串的每个字符$charsecho打印字符,带回车\r,但不带换行符-n-e强制 echo 解释转义序列,例如\r. 每次更改之间有 0.5 秒的延迟。


gei*_*rha 21

这是一个使用 的示例\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'
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅BashFAQ 34

  • 很棒的代码。不过,我会做一个小的修改。运行 `spinner &amp;` 后,我会将 pid 存储在局部变量 `spinner_pid=$!` 中,然后用 `kill $spinner_pid &amp;&gt;/dev/null` 替换 kill 调用 (7认同)