[英]while read line, only reading last line
我有一个小的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
如何播放每一首歌并在歌曲结束后开始下一首歌?
另外,有没有办法以随机顺序读取行?
提前致谢。
仅正确播放文件中的最后一行。
使用>>
代替>
进行追加 。 您正在使用>
每次都会覆盖该文件,因此您只能看到文件中的最后一行。
另外,有没有办法以随机顺序读取行?
你可以使用shuf
或sort
:
while IFS= read -r line
do
echo "loadfile '$line'" >> /tmp/mplayer.fifo
done < <(shuf $file)
说sort -R filename
名将执行随机排序。
#!/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)
请参阅>>
以在文件中追加行。 如果你想清除队列并从你的新歌开始 - 只需在while
循环之前添加行echo "" > /tmp/mplayer.fifo
并且shuf file > randomshuffled
用于随机随机播放文件中的行
你也可以使用
mplayer -shuffle -playlist /home/dummy/list.m3u
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.