没有那个文件或目录 - bash

没有那个文件或目录 - bash

我对这个已经没有什么想法了(以及想法的来源)。我从 Audacious 获取文件路径,并尝试从引用的目录中获取专辑封面。提供的信息是正确的,并且在终端中有效。

我尝试过的事情:

  1. 将变量重定向到文件,并使用十六进制编辑器查找奇数字符。

  2. 以同样的方式检查脚本中是否有奇怪的字符。

  3. 直接使用 /bin/bash 执行脚本。

  4. 仅使用非功能性代码制作了一个新脚本。

  5. 因为返回的路径是相对的 [~/Music/Eagles/Desperado],所以尝试将其作为 [/home/freebird/Music/Eagles/Desperado]。

  6. 由于 [Music] 是指向另一个驱动器的软链接,因此已尝试将其作为 [/mnt/data/Music/Eagles/Desperado]

  7. 一直在使用 Eagles,因为我不想处理 [~/Music/Alice Cooper/School's Out],直到我找到更简单的案例!

  8. IT 没有任何 CR 或其他在 Windows 或其他地方编辑的无关字符 - 自 2007 年以来,除了 Freecell 和 Spider Solitaire 之外,没有在 Windows 上玩过任何其他游戏。

  9. 到目前为止,还没有任何方法可以将生成的路径从脚本内部解析为可用性,所有工作都可以从终端(包括 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_pathcd

相关内容