如何在名称中使用空格引用名称

时间:2012-04-15 03:15:33

标签: linux bash

错误:似乎是出现了_而不是

文件树看起来像:

.
|-- Christina Aguilera
|   |-- Back To Basics . Ain't No Other Man.mp3 

但是,脚本显示了这个:

.
|-- Christina Aguilera
|   |-- Back To Basics _ Ain't No Other Man.mp3

守则:

    tag=$(tail -c 128 $path)
    song_name=$(echo "$tag" | cut -c 4-33 | sed -r 's/ +$//')
    artist_name=$(echo "$tag" | cut -c 34-63 | sed -r 's/ +$//')
    album_name=$(echo "$tag" | cut -c 64-93 | sed -r 's/ +$//')
    test -e "$2/$artist_name" || mkdir "$2/$artist_name"
    ln -s $path "$2/$artist_name/$album_name _ $song_name.mp3"
done

如何编辑此代码以解决错误?

3 个答案:

答案 0 :(得分:1)

首先,您的输出将显示为“_”,并且您想要将其替换为“.”,您需要做的就是将“_”替换为“.” “{{1}}”

答案 1 :(得分:1)

一些想法:

  • 尝试使用bash -x script运行脚本以显示调试信息。这应该会准确显示错误发生的位置。

  • 撰写问题时,请添加将重现错误的最小完整代码段以及错误消息的完整文本。

  • 您评论说“它只是说它无法创建目录。”这听起来像mkdir失败了。是否存在顶级目录(即$2是什么)?如果没有,请使用mkdir -p "$2/$artist_name"创建整个路径。

  • 一个简单的简化:您可以使用sed -r 's/ +$//'代替tr -d ' '而不是使用{{1}}删除空格。

答案 2 :(得分:0)

我不确定我是否理解这个问题,但看起来脚本的最后一行是引入_,所以只需将其更改为.即可。那是你想要的吗?