Это скорее вопрос о том, как использовать командную строку, а не о том, как добавлять элементы на панель уведомлений Unity.
У меня должен быть однострочный CLI, чтобы добавить новый элемент в системный белый список com.canonical.Unity.Panel.
Стандартная процедура для этого:
sudo gsettings get com.canonical.Unity.Panel systray-whitelist
Мы получили
['JavaEmbeddedFrame', 'Wine', 'Skype']
Затем мы делаем вторую команду
sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"
Хотя это здорово и все, требуется, чтобы люди копировали и вставляли результат из первой строки, и для сценария, который я пишу, я хочу сделать это одной командой.
Пока это то, что у меня есть:
sudo gsettings set com.canonical.Unity.Panel systray-whitelist | gsettings get com.canonical.Unity.Panel systray-whitelist | sed -e "s/']$/,'shutter']/" | awk 'NF{print "\"" $0 "\""}'
Я думаю, что что-то упустил.
Во-первых, я не уверен, правильно ли я передаю строку в функцию gsettings set. Во-вторых, хотя я думаю, что я правильно разбираю вывод функции gsettings get, я не смог бы найти способ добавить "" к измененному результату с помощью sed, поэтому мне пришлось направить еще одну команду awk в этот беспорядок.
Спасибо всем, кто помогает.
источник
Ответы:
После нажатия ошибки за ошибкой я наконец понял, почему он не принимает кавычки. Вы можете просто поместить кавычки вокруг фактической переменной, нет необходимости вводить их в фактическую команду.
Это будет работать:
(Также вам нужно удалить 'in sed -e "s /'] $ / в вашем примере, чтобы это работало).
Позже отредактируйте: кстати, не запускайте gsettings с помощью sudo ... это не сработает.
источник