读取行时,仅读取最后一行



我有一个小的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

如何播放每行并在歌曲结束后开始下一首歌曲?

另外,有没有办法以随机顺序读取行?

提前谢谢。

只有文件中的最后一行才能正确播放。

使用>>而不是>进行追加。 您正在使用每次都会覆盖文件的>,因此您只能看到文件中的最后一行。

另外,有没有办法以随机顺序读取行?

您可以使用shufsort

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

相关内容

  • 没有找到相关文章

最新更新