シェルスクリプトで簡易プログレスバー

2022/08/02に公開

シェルスクリプトで普通にsleepすると経過時間・残り時間が可視化できないため、時間経過に応じて延びるプログレスバーを作りました。

何らかの処理の進捗によって増えるわけではないので、「プログレス」は名前に偽りありかもしれませんが…。

progress.sh
#!/bin/bash

w=$(($1*10))
printf '=%.0s' $(seq $w)
printf '\r'
for i in $(seq $w)
do
  sleep .1
  printf '#'
done
printf '\n'

秒数を引数として取ります。簡易版なので引数がない場合のエラーハンドリングなどはしていません。

以下ツイートに動作イメージを添付しています。

https://twitter.com/i/status/1554337143157555200

なお厳密な時間計測には使えないのでご注意ください。

文字の繰り返しの出力はこちらを参考にしました: https://stackoverflow.com/questions/5349718/how-can-i-repeat-a-character-in-bash

Discussion