HINWEIS: Eine neue Zeile wird angezeigt, aber od -c zeigt sie nicht an.
Der Statusbefehl ( quodlibet --status | od -c
) meines Musik-Players hat drei Status , und ich versuche, eine Bedingung basierend auf dieser Ausgabe zu schreiben. Die Ausgaben dieses Befehls sind wie folgt (können je nach Konfiguration unterschiedlich sein).
Ich denke, dies wird auf stderr gedruckt, weil
od -c
es nicht richtig angezeigt wird, obwohl es für die anderen Befehle gilt.not-running 0000000
hielt inne
0000000 p a u s e d P a n e d B r o w 0000020 s e r 1 . 0 0 0 s h u f f l 0000040 e o n 0 . 2 2 8 \n 0000053
spielen
0000000 p l a y i n g P a n e d B r o 0000020 w s e r 1 . 0 0 0 s h u f f 0000040 l e o n 0 . 2 3 2 \n 0000054
Mein Ziel ist es, alles außer "nicht laufen", "angehalten" oder "spielen" zu entfernen und dies unter folgenden Bedingungen zu verwenden:
#!/bin/bash
status=$(quodlibet --status | awk '{split($0,m," "); printf "%s",m[1]}' | tr -d '\000\007\010\n')
if [ "$status" = "playing" ]; then
quodlibet --print-playing '<artist>: <title>' | cut -c1-45
else
echo -n "$status"
fi
In dem Fall, in dem der Player nicht ausgeführt wird, wird nach "Nicht ausgeführt" immer eine neue Zeile im Terminal gedruckt. Auch wenn ich so etwas mache
echo -n "$(quodlibet --print-playing '<artist>: <title>' | cut -c1-45)"
Wenn ich diesen Ausgang anpfeife od -c
, bekomme ich das gleiche
not-running
0000000
was nicht richtig ist. Die neue Zeile wird nicht angezeigt, befindet sich jedoch im Terminal.
Fragen
- Was verursacht das?
- Wird der Befehl auf Standardfehler gedruckt, wenn das Programm nicht ausgeführt wird?
- Wie kann ich das feststellen?