проблема команды notify-send в сценарии оболочки - PullRequest
0 голосов
/ 31 января 2019

У меня есть текстовый файл b.txt со следующим текстом:

notify-send -i gtk-info "Как дела" -h строка: x-canonical-private-synchronous:что-нибудь

У меня есть скрипт оболочки со следующим кодом:

#!/bin/sh

while true;
do if [ -s b.txt ]
then
value="$(cat b.txt)"
exec $value
sleep 0.1
fi
done

Когда я запускаю скрипт, он выдает следующую ошибку, и уведомление не отображается:

Недопустимое количество параметров.

Но когда текстовый файл содержит команду, состоящую всего из двух слов, подобных этому:

notify-send -i gtk-info«Hows You» -h строка: x-canonical-private-synchronous: что-нибудь

уведомление отображается идеально.

Эта проблема возникает, только когда я выполняю уведомление-отправка черезскрипт оболочки.Как отобразить уведомление с сообщением, содержащим любое количество слов?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Попробуйте заменить exec $value на eval $value

0 голосов
/ 31 января 2019

exec совершенно не подходит для использования здесь.Может быть, попробуйте

#!/bin/sh

while true;
do
  if [ -s ./b.txt ]
  then
    . ./b.txt
    sleep 0.1
  fi
done

Но выполнение этого в узком цикле кажется странным, что нужно сделать, и выполнение файла неизвестного происхождения в лучшем случае сомнительно.Вы уверены, что этот текстовый файл всегда будет содержать именно то содержимое, которое вы ожидаете, и не может быть изменен никем?Почему эта команда помещается в отдельный файл?

...