我有一个小的bash脚本应该读取文件并在mplayer中播放每一行。但它只播放每个文件1秒,然后继续播放下一首歌曲。仅正确播放文件中的最后一行。以下是我到目前为止的情况:
#!/bin/bash
file=/home/dummy/list.m3u
echo "################################"
while IFS= read -r line
do
echo "loadfile '$line'" > /tmp/mplayer.fifo
done < $file
文件中的行只包含mp3的路径,如下所示:/home/dummy/song.mp3
如何播放每一首歌并在歌曲结束后开始播放下一首歌?
另外,有没有办法以随机顺序读取行?
先谢谢。
答案 0 :(得分:3)
只能正确播放文件中的最后一行。
使用>>
代替>
追加。您正在使用>
每次都会覆盖该文件,因此您只能看到文件中的最后一行。
另外,有没有办法以随机顺序读取行?
您可以使用shuf
或sort
:
while IFS= read -r line
do
echo "loadfile '$line'" >> /tmp/mplayer.fifo
done < <(shuf $file)
说sort -R filename
会执行随机排序。
答案 1 :(得分:0)
#!/bin/bash
file=/home/dummy/list.m3u
shuf -n file > randomshuffled
echo "################################"
while IFS= read -r line
do
echo "loadfile '$line'" >> /tmp/mplayer.fifo
done < $( cat randomshuffled)
请参阅>>
以在文件中附加行。如果您要清除队列并开始使用新歌曲 - 只需在echo "" > /tmp/mplayer.fifo
循环之前添加第while
行
文件
中随机随机播放的shuf file > randomshuffled
您也可以使用
mplayer -shuffle -playlist /home/dummy/list.m3u