运行bash脚本时出现奇怪的问题

时间:2011-03-24 14:37:30

标签: bash gnome-terminal

我写了一个从网站上获取歌词的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:我写的剧本非常基础和非常规,所以在评论中也欢迎任何提高它的建议:)

编辑:输出稍有变化,现在它只显示播放歌曲的名称而没有其他内容。虽然有时它仍会显示wget错误。

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

2 个答案:

答案 0 :(得分:1)

两个wget命令应该有双引号的url变量,例如:wget -q -U Mozilla -O 1.txt $link应为wget -q -U Mozilla -O 1.txt "$link"

答案 1 :(得分:0)

您需要对您的歌曲标题进行uriencode,以便在您的网址中不会直接传递“?”,“&”,“%”和“+”等特殊字符。

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

将处理?。我不知道bash中更通用的解决方案,而不使用单行Perl或Python脚本。

相关问题