私は非常に短いスクリプトを持っています。
loading_animation &
LOADING_ANIMATION=$!
trap "kill -9 $LOADING_ANIMATION" `seq 0 15`
task_to_be_performed
echo "Script Complete"
スクリプトはこれより少し長いですが、よくまとめられています。
スクリプトの実行中(アニメーションが表示されている間)[L]キーを押すと、アニメーションが停止し、task_to_be_performedが完了するまでログ表示が開始されるように機能を追加する方法はありますか?
デフォルトでは[L]を押すと、tail -f /var/log/messages
task_to_be_performedが完了したときにアニメーションが停止、開始、停止されるようにし、[スクリプトの完了]をエコーしてスクリプトを完全に終了します。
私は理解できません。
ベストアンサー1
#! /bin/bash
loading_animation &
ani_pid=$!
trap "kill -9 $ani_pid" 0
trap 'done=yes' USR1
output=ani
( task_to_be_performed; kill -USR1 $$) &
while true; do
read -s -n 1 -t 1 input
if [ ani = "$output" ] && [ l = "$input" ]; then
output=log
kill "$ani_pid"
tail -f /var/log/messages &
tail_pid=$!
trap "kill -9 $tail_pid" 0
fi
if [ "$done" = yes ]; then
kill -9 $tail_pid
break
fi
done
echo "Script Complete"