我有一个很短的剧本。
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"