我的Ruby脚本维护一个m3u格式的播放列表,以标题开头:
#EXTM3U
然后会出现一些标题和艺术家信息,然后是URL或文件路径,如下所示:
#EXTINF:0, Echo tv Terrorellenes akcióterv Echo Tv 16 perc
https://www.youtube.com/watch?v=qxmpXHL6j74
总而言之:
#EXTM3U
#EXTINF:0, echo tv Terrorellenes akcióterv Echo Tv 16 perc
https://www.youtube.com/watch?v=qxmpXHL6j74
#EXTINF:0, echo tv Energiahatékonyság Echo Tv 6 perc 34 másodperc
https://www.youtube.com/watch?v=q8fZ7bo4gZo
#EXTINF:0, echo tv Jöhet a kvótanépszavazás Echo Tv 23 perc
https://www.youtube.com/watch?v=zkgIL1LXldI
我的脚本只是将其输出写入STDOUT
,然后将其重定向到.m3u播放列表文件。有时,我只想将输出附加到现有的播放列表文件,在这种情况下,我想省略标题,然后将剩余的内容写入m3u文件。出于这个原因,我想在我的脚本中检测STDOUT
是否通过写入(>
)或追加(>>
)模式重定向,以便我可以选择是否打印{{ 1}}标题或不。如何检测#EXTM3U
对象的状态?
答案 0 :(得分:0)
我想你可以在写之前检查STDOUT
是否为空:
% ruby -e 'puts File.zero?(STDOUT)' > test01
% cat test01
true
% ruby -e 'puts File.zero?(STDOUT)' >> test02
% cat test02
true
% ruby -e 'puts File.zero?(STDOUT)' >> test02
% cat test02
true
false
请注意,第一个追加将给出true
,因为该文件实际上是空的,在这种情况下,我认为可以编写标题。