如何获取 Ruby 脚本 (write/append/pipe) 的重定向状态
How to get the redirection status of a Ruby script (write/append/pipe)
我的 Ruby 脚本维护了一个 m3u 格式的播放列表,它以 header:
开头
#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 播放列表文件。有时,我只是想将输出附加到现有的播放列表文件中,在这种情况下,我想省略 header,而将剩余的内容写入 m3u 文件中。出于这个原因,我想在我的脚本中检测 STDOUT
是否被重定向为写入 (>
) 或附加 (>>
) 模式,以便我可以选择是否打印 #EXTM3U
header 与否。我如何检测 STDOUT
object 的状态?
我想你可以在写之前检查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
,因为文件实际上是空的,在这种情况下,我认为可以写入 header.
我的 Ruby 脚本维护了一个 m3u 格式的播放列表,它以 header:
开头#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 播放列表文件。有时,我只是想将输出附加到现有的播放列表文件中,在这种情况下,我想省略 header,而将剩余的内容写入 m3u 文件中。出于这个原因,我想在我的脚本中检测 STDOUT
是否被重定向为写入 (>
) 或附加 (>>
) 模式,以便我可以选择是否打印 #EXTM3U
header 与否。我如何检测 STDOUT
object 的状态?
我想你可以在写之前检查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
,因为文件实际上是空的,在这种情况下,我认为可以写入 header.