Странная проблема при запуске bash-скрипта - PullRequest
0 голосов
/ 24 марта 2011

Я написал скрипт 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`"

Я создал новый профиль под названием "текст", чтобы придать терминалу, который открывает собственный вид. Когда я открываю терминал с этим профилем и запускаю скрипт, он снова работает отлично. Однако, когда я использую комбинацию клавиш для запуска пользовательской команды, я получаю следующую ошибку:

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: Сценарий, который я написал, довольно элементарен и дурацкий, поэтому любые предложения по его улучшению также приветствуются в комментариях:)

EDIT: вывод немного изменился, теперь он просто показывает название воспроизводимой песни и ничего больше. Хотя иногда это все еще показывает ошибку wget.

EDIT2: Когда я запускаю команду терминала gnome из терминала, она работает. Проблема только в том, что он запускается с помощью сочетания клавиш с помощью команд compiz или если я использую диалог запуска (alt + f2).

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Две команды wget, вероятно, должны иметь переменные url в двойных кавычках, например: wget -q -U Mozilla -O 1.txt $link должно быть wget -q -U Mozilla -O 1.txt "$link"

0 голосов
/ 24 марта 2011

Вам необходимо кодировать название песни, чтобы специальные символы, такие как '?', '&', '%' И '+', не передавались буквально в вашем URL.

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

будет обрабатывать ?.Я не знаю более общего решения в bash без использования однострочных скриптов Perl или Python.

...