🌀
[bash] プログレス スピナーを表示する
bashで処理に時間がかかるスクリプトを実行しているときに,echo
のみだと動いてる感じがないので,動いている雰囲気を出そう
↓ Progress spinner
bash script
以下のスクリプトは,画像データからGIFを生成するスクリプト
spinner
関数の定義をスクリプトの上の方に入れて
(何かの処理) & spinner "文字列"
で使うことができる
#! /bin/bash
spinner() {
local pid=$!
local delay=0.5
local spinstr='|/-\'
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
local temp=${spinstr#?}
printf "[%c] : $1" "$spinstr"
local spinstr=$temp${spinstr%"$temp"}
sleep $delay
printf "\b\b\b\b\b\b"
for ((i=0 ; i<${#1} ; i++)); do
printf "\b"
done
done
printf "[o] $1\n"
}
cd img1
convert -delay 10 -loop 0 *.png animation.gif & spinner "img1"
cd ../img2
convert -delay 10 -loop 0 *.png animation.gif & spinner "img2"
cd ../img3
convert -delay 10 -loop 0 *.png animation.gif & spinner "img3"
cd ../img3
convert -delay 10 -loop 0 *.png animation.gif & spinner "img4"
実行結果
参考リンク
Discussion