我目前正在学习如何使脚本更加冗长。下面的代码显示了一个微调器。但是,我很难修改这个微调器以获得诸如“下载”之类的单词。我希望单词和微调器彼此相邻。我不是问如何实现微调器的进展,而是如何与单词连接。怎么能实现这个目标?
sp='/-\|'
sc=0
spin() {
printf "\b${sp:sc++:1}"
((sc==${#sp})) && sc=0
}
endspin() {
printf "\r%s\n" "$@"
}
until work_done; do
spin
some_work ...
done
endspin
答案 0 :(得分:5)
你可以这样做
sp='/-\|'
sc=0
spin() {
printf "\r${sp:sc++:1} $1"
((sc==${#sp})) && sc=0
}
endspin() {
printf "\r%s\n" "$@"
}
work_done() {
false
}
some_work() {
sleep 1
}
until work_done; do
spin "Downloading"
some_work ...
done
endspin
答案 1 :(得分:2)
虽然我很佩服Ed和Jakuje的DIY精神,但我也想重用其他人的代码。如果你宁愿回收而不是重新创建,请考虑Louis Marascio's spinner。我将他的spinner()
函数放入我的shell库中,它很容易使用:
#!/bin/bash
. lib.sh
run_10s &
echo -n wait
spinner $!
echo -e "\rdone"
显示器
$ ./test_lib
wait [/]
旋转器旋转 10秒钟,然后用wait
清除包含\r
的那条线,你只剩下
$ ./test_lib
done
$
在屏幕上。