在运行脚本时向尾部日志添加功能?

在运行脚本时向尾部日志添加功能?

我有一个很短的剧本。

    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"

相关内容