Сценарий оболочки не работает с сочетанием клавиш

У меня есть два монитора, DVI 0 и DVI-1, и я только использую по одному. Они находятся в различных комнатах в доме, и я хотел бы переключиться между ними с сочетанием клавиш. Я сделал следующий сценарий оболочки для изменения на неактивный монитор:

current_display=$(xrandr | sed -n 's/^\(.*\) connected primary.*$/\1/p')

if [ "$current_display" == "DVI-0" ]
then
 xrandr --output DVI-1 --auto --primary
 xrandr --output DVI-0 --off 
elif [ "$current_display" == "DVI-1" ]
then
 xrandr --output DVI-0 --auto --primary
 xrandr --output DVI-1 --off 
fi

Я сохранил это как/home/username/Documents/SwitchDisplay.sh и сделал это исполняемым файлом. При выполнении /home/username/Documents/SwitchDisplay.sh от терминала это делает то, что я хочу, чтобы это сделало. Но когда я присваиваюсь /home/username/Documents/SwitchDisplay.sh к сочетанию клавиш (ctrl+alt+s) использование Настроек/Устройств/Опций клавиатуры в Ubuntu это не работает.

Я проверил, работает ли ярлык путем присвоения команды firefox к ярлыку и это хорошо работает. Когда я нажимаю, Firefox сочетания клавиш открывается. Я даже добавил firefox к новой строке в сценарии оболочки и присвоил сценарий оболочки ярлыку снова, затем нажимание ярлыка также открывает Firefox. Таким образом, это действительно выполняет сценарий оболочки, но важная часть сценария оболочки не работает правильно.

Кто-либо знает, как получить эту работу?

1
задан 18 February 2020 в 21:37

1 ответ

Вы используете двойной знак "равно" в своих условных придаточных предложениях сценария. Это - bashism (он прекрасен на Bash, но перестанет работать в других оболочках). Я полагаю, что сценарий обрабатывается dash и нет bash, так замена == с = и дайте ему попытку.

Вы избегаете что "неопределенность оболочки" путем добавления хижины в первой строке сценария, указания на оболочку, которая будет использоваться. Если Вы попробовали #!/bin/bash, как предложено в комментариях, ярлык с Вашим исходным сценарием должен работать. Но если можно сделать код более портативным (с синглом равный вместо двойного), почему нет?


Некоторый bashisms: https://mywiki.wooledge.org/Bashism

О, и это - довольно хорошая Wiki для изучения основательных сценариев оболочки.

0
ответ дан 20 February 2020 в 22:50

Другие вопросы по тегам:

Похожие вопросы: