0

我编写了一个从网站获取歌词的 bash 脚本。脚本在这里 --> http://scrippets.wordpress.com/2011/02/01/fetching-lyrics-of-songs-from-the-terminal/ (脚本中的缩进是正确的,不像它看起来博客)从终端执行时,该脚本运行良好。现在我使用 compiz 命令创建了一个自定义键盘快捷键,当按下右键组合时执行以下命令:

gnome-terminal --working-directory="/home/tapan/sandbox/bash/" --window-with-profile=lyrics -e "/home/tapan/sandbox/bash/lyrics.sh" -t "`rhythmbox-client --print-playing`"

我创建了一个名为“lyrics”的新配置文件,为终端提供了一个自定义外观。当我使用此配置文件打开终端并运行脚本时,它再次完美运行。但是,当我使用键盘快捷键运行自定义命令时,出现以下错误:

Pink Floyd - Is There Anybody Out There?
wget: missing URL
Usage: wget [OPTION]... [URL]...

Try `wget --help' for more options.
cat: 3.txt: No such file or directory

我无法弄清楚出了什么问题。我的意思是,如果它在终端中正常工作得很好,那为什么不工作呢?有什么建议么?PS:我写的脚本非常初级和noobish,所以任何改进它的建议也欢迎在评论中:)

编辑:输出发生了一些变化,现在它只显示正在播放的歌曲的名称,没有别的。虽然有时它仍然显示 wget 错误。

EDIT2:当我从终端运行该 gnome 终端命令时,它可以工作。问题仅在使用 compiz 命令使用键盘快捷键运行它时,或者如果我使用运行对话框(alt+f2 之一)。

4

2 回答 2

1

两个 wget 命令可能应该将 url 变量放在双引号中,例如:wget -q -U Mozilla -O 1.txt $link应该是wget -q -U Mozilla -O 1.txt "$link"

于 2011-03-24T14:47:24.750 回答
0

您需要对歌曲标题进行 uriencode,以便“?”、“&”、“%”和“+”等特殊字符不会在 URL 中按字面意思传递。

name3=${name2//\?/%3F}
searchq=${name3// /+}

将处理?'s. bash如果不求助于单行 Perl 或 Python 脚本,我不知道有更通用的解决方案。

于 2011-03-24T15:08:34.273 回答