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
자세한 설명: 내 음악 폴더에 태그가 완전히 지정되지 않았습니다. 즉, 일부 노래에는 아티스트나 제목이 없으므로 이 스크립트의 아이디어는 제목이나 아티스트가 없으면 "Now Playing title
" 실행에 알림을 보내는 것입니다. artist
" filename
따라서 보낼 알림을 평가하려면 세 가지 변수가 필요합니다.
답변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'
는 생각한 대로 작동하지 않는 이유는 제 능력 밖의 일입니다. 세 번째 읽기를 허용하겠습니다.