2012-04-15 28 views
1

错误:似乎它显示了一个_而非如何添加双引号带有空格的名字在他们的名字

文件树的样子:

. 
|-- 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 

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

回答

0

我不确定我是否理解这个问题,但它看起来像脚本的最后一行是介绍_,因此只需将其更改为.那里。那是你想要的吗?

+0

是的谢谢你的回复。但我试过了,它只是说它不能创建一个目录。任何其他选项? – 2012-04-15 03:32:23

+0

它看起来像你的代码的一些部分丢失。你也没有说明代码应该做的第一件事。没有进一步的信息,我不能真正帮助你,对不起。 – kini 2012-04-15 04:03:23

1

首先,你的输出将与“_”显示,你想用一个“.

1

的一些想法与“.”所有你需要做的是取代“_”来替代它:

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

  • 当你写一个问题,包括最小的完整片段将重现错误,并且错误消息的确切文本

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

  • 一个小的简化:代替使用sed -r 's/ +$//'来删除空格,您可以改为使用tr -d ' '

+0

我做了所有这些,但它没有,我是相当新的Linux是否有任何方式可以告诉我究竟在哪里或在编码中放置bash -x脚本。我得到了_成为。 ,把“。” ,但它仍然给我同样的错误。错误说检查您的目录和文件的名称。 其中大多数都包含空格 - 请记住用名称中的空格加双引号! – 2012-04-15 17:00:53

+0

您可以从命令行**运行当前问题脚本**,如'bash -x yourProblematicScript.sh'或者1.将首行更改为'#!/ bin/bash -x'或者将行插入你的脚本靠近你认为问题的地方,'set -x';你可以用'set + x'来关闭'eXpansion'。祝你好运。 – shellter 2012-04-15 17:53:19

相关问题