Stackexchangeで似たような質問を見つけましたが、助けることができるほど私の場合には近いわけではありません。
スクリプトを生成し、それをキーにバインドして押したときに「title
by artist
」が表示されるか、アーティスト/タイトルがない場合は「filename
」が表示されるようにします。
Cmus(私が選んだ音楽プレーヤー)は(オリジナル)オプションとペアにcmus-remote
なっている-C
ため、cmusプレーヤーに何かを照会し、改行で区切られた応答を得ることができます。たとえば、次のようになります。
cmus-remote -C 'format_print %a %t %F'
Beach House
Space Song
/home/user/Music/Beach House - Space Song.mp3
cmus-remote
問題はすべてのクエリを実行したくありませんが、
IFS= read -r artist title file << EOF
$(cmus-remote -C 'format_print %a %t %F')
EOF
ただしartist
、およびのみ提供され、およびtitle
は空です。注:この場合、オプションをfile
削除しても役に立ちません。を修正してください。-r
IFS
詳細な説明:My Musicフォルダにタグが完全に割り当てられていません。つまり、一部の曲にはアーティストやタイトルがないため、このスクリプトのアイデアは、タイトルやアーティストがない場合は、「今すぐプレイtitle
」の実行に通知を送信することです。したがってartist
、filename
送信する通知を評価するには3つの変数が必要です。
答え1
各改行文字を読む必要があります。
cmus-remote -C 'format_print %a %t %F' |
while IFS= read -r artist; IFS= read -r title; IFS= read -r file
do
echo "a:$artist"
echo "t:$title"
echo "f:$file"
done
一度実行して正しい値をエコーする理由はIFS=$'\n'
、思ったように動作しない理由は私の能力の外です。 3回目の読書を許可します。