如何修改Termux脚本实现动画与音乐命令并行运行同步输出?
Termux脚本实现动画与音乐并行同步运行
需求概述
现有Termux下的Bash脚本已实现echo/figlet + lolcat的终端动画效果,需要添加音乐播放功能,让动画与音乐同时运行,且终端动画输出不受干扰。
前置准备
先安装所需依赖工具(若未安装):
pkg install mpv lolcat figlet -y
mpv:用于后台播放音乐(也可替换为Termux自带的termux-media-player)lolcat/figlet:维持原有动画效果
修改后的完整脚本
#!/data/data/com.termux/files/usr/bin/bash command_not_found_handle() { /data/data/com.termux/files/usr/libexec/termux/command-not-found "$1" } # 替换为你的音乐文件绝对路径,示例:/storage/emulated/0/Music/your_song.mp3 MUSIC_FILE="/path/to/your/music.mp3" # 后台启动音乐播放,--no-terminal 避免mpv输出干扰终端动画 mpv --no-terminal "$MUSIC_FILE" & # 记录音乐进程ID,用于脚本结束时终止音乐 MUSIC_PID=$! tput civis clear echo echo " < ━━━━━━━━━━━━━━ [★] T E R M U X [★] ━━━━━━━━━━━━━━ > " | lolcat -d 10 -a echo echo figlet -f ASCII-Shadow ' 123456' | lolcat -a -d 5 currentDate=$(date) echo "$currentDate" | lolcat myip=$(ifconfig | grep 'inet' | grep -v '::1' | grep -v '127.0.0.1' | awk 'NR==1{print $2}') echo " < ━━━━━━━━━━━━━━━ [★] $myip [★] ━━━━━━━━━━━━━ > " | lolcat echo tput cnorm # 动画完成后终止音乐进程(可选,若希望音乐随脚本结束停止) kill $MUSIC_PID 2>/dev/null
核心逻辑说明
- 后台运行音乐:用
&将音乐播放命令放到后台,不阻塞前台动画执行 - 隔离输出:
mpv --no-terminal参数避免音乐播放器的日志输出干扰终端动画 - 进程管理:通过
$!获取后台音乐进程ID,在动画结束后用kill终止音乐,避免音乐持续播放 - 替代方案:若不想用mpv,可替换为Termux自带工具,命令改为:
termux-media-player play "$MUSIC_FILE" &
内容的提问来源于stack exchange,提问作者Abbas Al souroush
相关产品推荐
相关产品推荐

