我对这个已经没有什么想法了(以及想法的来源)。我从 Audacious 获取文件路径,并尝试从引用的目录中获取专辑封面。提供的信息是正确的,并且在终端中有效。
我尝试过的事情:
将变量重定向到文件,并使用十六进制编辑器查找奇数字符。
以同样的方式检查脚本中是否有奇怪的字符。
直接使用 /bin/bash 执行脚本。
仅使用非功能性代码制作了一个新脚本。
因为返回的路径是相对的 [~/Music/Eagles/Desperado],所以尝试将其作为 [/home/freebird/Music/Eagles/Desperado]。
由于 [Music] 是指向另一个驱动器的软链接,因此已尝试将其作为 [/mnt/data/Music/Eagles/Desperado]
一直在使用 Eagles,因为我不想处理 [~/Music/Alice Cooper/School's Out],直到我找到更简单的案例!
IT 没有任何 CR 或其他在 Windows 或其他地方编辑的无关字符 - 自 2007 年以来,除了 Freecell 和 Spider Solitaire 之外,没有在 Windows 上玩过任何其他游戏。
到目前为止,还没有任何方法可以将生成的路径从脚本内部解析为可用性,所有工作都可以从终端(包括 cd)进行。
这是最近尝试时出现的实际错误消息:
freebird@nest:~$ ~/check.sh
/home/freebird/check.sh: line 8: cd: ~/Music/Eagles/Desperado: No such file or directory
还有其他嫌疑吗?
以下是测试的检查脚本:
#!/bin/bash
file_path=`audtool --current-song-tuple-data file-path`
echo > test2 ${file_path}
#${file-path}="/mnt/data/""${file_path:2}"
echo > testpath ${file_path}
cd "${file_path}"
#cd -P "${file-path}"
pwd
exit 1
if [[ ! -e "folder.jpg" ]]; # if no art work found
then
cp ~/Work/headphone.png /tmp/cover.png # put in placeholder
echo "Placeholder"
else
convert "${file_path}""/folder.jpg" -resize 120x120 /tmp/cover.png # ready for showing
echo "found cover"
fi
它仍然包含各种“测试”附加内容,相当于分散的 printf() 来查看发生了什么:)
新版本的测试脚本:
#!/bin/bash
file_path=`audtool --current-song-tuple-data file-path`
file_path=$(eval echo $file_path)
echo > test2 ${file_path}
${file-path}="$HOME"${file_path:1}
echo > testpath ${file_path}
cd ${file-path}
#cd -P "${file-path}"
pwd
exit 1
if [[ ! -e "folder.jpg" ]]; # if no art work found
then
cp ~/Work/headphone.png /tmp/cover.png # put in placeholder
echo "Placeholder"
else
convert "${file_path}""/folder.jpg" -resize 120x120 /tmp/cover.png # ready for showing
echo "found cover"
fi
新的错误消息:
freebird@nest:~$ ~/check.sh
/home/freebird/check.sh: line 5: path=/home/freebirdhome/freebird/Music/Eagles/Desperado: No such file or directory
/home/freebird/check.sh: line 7: cd: path: No such file or directory
/home/freebird
freebird@nest:~$
答案1
我假设该audtool --current-song-tuple-data file-path
命令返回一个以 开头的字符串~
。您必须扩展此字符串,以便~
将字符替换为您的主文件夹。一种方法是这样的:
file_path=$(eval echo $file_path)
请在运行的行后插入上述语句audtool ...
。
另外,删除第 5 行
${file-path}="$HOME"${file_path:1}
没有用。在语句中将其替换file-path
为。file_path
cd