特定のプロセスが完了するのを待っている間にスピナーを表示

特定のプロセスが完了するのを待っている間にスピナーを表示

コマンドラインでタスクが完了するまでスピナーを表示するにはどうすればよいですか?つまり、スクリプトが実行中でスクリプトの実行中にスピナーが表示され、スクリプトが完了するとスピナーが消えるようにするにはこれが機能します。

一般的なスピナーコードは次のとおりです。

i=1
sp="/-\|"
echo -n ' '
while true
do
printf "\b${sp:i++%${#sp}:1}"
done

コマンドの実行中にスピナーを表示し、コマンドが操作を完了すると消えるように、古いスピナーコードをコマンドにリンクするにはどうすればよいですか?ループにコマンドを含めると、スピナーと一緒にループが発生します。それでは、この場合の解決策は何ですか?

ベストアンサー1

whileループが実際のシャットダウンコマンドを監視するようにします。 Linux環境にはPIDごとに/ procエントリがあると想定していますが、他の方法でそれらを分割することもできます。

#!/bin/bash
# your real command here, instead of sleep
sleep 7 &
PID=$!
i=1
sp="/-\|"
echo -n ' '
while [ -d /proc/$PID ]
do
  printf "\b${sp:i++%${#sp}:1}"
done

おすすめ記事