我目前正在编写一个简单的 bash 脚本来记录流式广播流。上班和准备工作的后勤工作意味着我会错过大约 30 分钟的我最喜欢的早餐节目,因此我编写此脚本的目的是将其放在我的工作机器上的 cron 计划中,以开始录制大约 15 分钟在我上班之前。
以下脚本摘录不起作用:
echo ${FILEFULLPATH} | xargs -t screen -dmS ${STATION_NAME}Stream mplayer ${STATION_URL} -dumpstream -dumpfile
但是,运行xargs -t
输出效果很好 -screen -ls
显示屏幕并screen -r
表明该命令确实正在运行。这是输出命令:
screen -dmS RadioXStream mplayer http://radiostream.net/ -dumpstream -dumpfile ~/radio/radiostream_06102015-1316.mp3
我已经使用过set -x
,一切看起来都很好。当我screen -ls
运行脚本后运行时,应该创建的屏幕不存在。
我将此命令基于我为 Minecraft 服务器编写的早期脚本,唯一的主要区别是我在此处使用 xargs 作为文件路径,因为它用引号将相对目录括起来,例如'~/radio/file.mp3'
答案1
该问题肯定是由于使用 xargs 引起的。我通过将所有变量粘贴在命令行上而不是将它们放入变量中解决了我的问题:
screen -dmS ${STATION_NAME}Stream mplayer ${STATION_URL} -dumpstream -dumpfile ${DIRECTORY}${STATION_NAME}_${DATETAG}.mp3
感谢您的评论。