Я делаю bash-скрипт для Linux, который закрывает окно терминала, если окно теряет фокус.
В командной строке я смог сделать это:
termwin=$(xdotool getactivewindow)
while :
do
if [[ $(xdotool getactivewindow) != $termwin ]]
then
exit
fi
done
Он работает набранным вручную в терминале, но, если я помещаю его в скрипт, вместо закрытия окна, когда фокус теряется, скрипт просто останавливается. Нет ошибок или чего-то еще, просто вернитесь к подсказке.
Я чувствую, что мне не хватает чего-то простого.
РЕДАКТИРОВАТЬ
Прочитав это ...:смотрите здесь
Я попытался запустить это как ". Test.sh", а не "./test.sh", и это сработало. Ссылка описывает разницу в этих методах как запуск сценария как подпроцесса или как часть основного процесса, соответственно. Может кто-нибудь просто объяснить это и / или изменить сценарий для успешной работы с "./" вместо ".", В последнем случае возникают проблемы?