2016-04-14 6 views
0

Mein Ruby-Skript unterhält eine M3U-Format Playlist erhalten, die mit einem Header beginnt:Wie die Umleitung Status eines Ruby-Skript (Schreib-/append/Rohr)

#EXTM3U 

Dann einige Titel und Künstlerinformationen kommt, und neben der URL oder Dateipfad wie folgt:

#EXTINF:0, Echo tv Terrorellenes akcióterv Echo Tv 16 perc 
https://www.youtube.com/watch?v=qxmpXHL6j74 

alles in allem Beispiel:

#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 

Mein Skript schreibt einfach seine Ausgabe in STDOUT, und ich leite es in eine .m3u Playlist-Datei um. Manchmal möchte ich nur die Ausgabe an eine vorhandene Playlist-Datei anhängen, und in diesem Fall möchte ich den Header weglassen und einfach den restlichen Inhalt in die m3u-Datei schreiben lassen. Aus diesem Grund möchte ich in meinem Skript erkennen, ob STDOUT mit Schreiben (>) oder Anfügen (>>) Modus umgeleitet wird, so dass ich wählen kann, ob der #EXTM3U Header gedruckt werden soll oder nicht. Wie kann ich den Status des Objekts STDOUT erkennen?

Antwort

0

Ich denke, Sie können überprüfen, ob STDOUT vor dem Schreiben leer ist:

% 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 

Beachten Sie, dass die erste Anhän true geben wird, da die Datei tatsächlich leer ist, und in diesem Fall ich nehme an, es ist okay, die Kopfzeile schreiben .