LinuxForum.Fans
Тема

Запуск скрипта по двойному клику в окне, с выводом

Автор: alexander_astafiev_1989 8 сообщений 3829 просмотров
#368075

Всем привет!

У меня сейчас Kubuntu 13.10

Суть вопроса: хочется как-то сделать так, чтобы скрипты bash, запускаясь по двойному клику откуда-нибудь, не выполнялись в фоне безмолвно, а выводили результаты своей работы в открывшееся окно Konsole, например.

Как это сделать глобально в системе или для конкретного скрипта?

#368089

example

text
#!/usr/bin/env bash

echo "Введи число" read nmb echo "Ты ввел число $nmb" read

[console]chmod +x ./example
xterm -T "Заголовок окна" -e ./example[/console]

Ну или см. что-то вроде этого
https://help.gnome.org/users/zenity/stable/

#368097

"alexander.astafiev.1989" написал:
У меня сейчас Kubuntu 13.10

"alexander.astafiev.1989" написал:
не выполнялись в фоне безмолвно, а выводили результаты своей работы в открывшееся окно Konsole, например.
в ярлыке KDE поставить галку "выполнять в терминале".
#368106
xxblx написал:
example
text
#!/usr/bin/env bash

echo "Введи число" read nmb echo "Ты ввел число $nmb" read

[console]chmod +x ./example
xterm -T "Заголовок окна" -e ./example[/console]

Во, во, вот это подходит идеально, спасибо!

А есть ли какой-то способ задать такой способ выполнения непосредсна в теле скрипта? Я-то в автозапуск пропишу

[console]konsole -e $HOME/.bin/firefox-profile-update[/console]

, и меня это устроит.

Но есть ли возможность скрипту определять, откуда он был запущен (по клику или в терминале), и если по клику - открывать окно с выводом?

#368109

"alexander.astafiev.1989" написал:
Но есть ли возможность скрипту определять, откуда он был запущен (по клику или в терминале), и если по клику - открывать окно с выводом?
нет.

СНАЧАЛА открывается окно терминала, а ПОТОМ в нём запускается скрипт.

Но можно не открывать терминал, а ВНУТРИ скрипта выполнить ДРУГОЙ скрипт уже в терминале.

А если тот же самый, то получится бесконечный цикл.
#368229

alexander.astafiev.1989, проще и быстрее:
Условно, скрипт все в том же файле example

text
#!/usr/bin/env bash

if [ "$1" = "console" ]; then echo true else echo false fi

[console][xxblx@localhost ~]$ ./example
false
[xxblx@localhost ~]$ ./example 123
false
[xxblx@localhost ~]$ ./example trololo
false
[xxblx@localhost ~]$ ./example console
true[/console]

Как видим, если запустить ./example console, условие выполняется и по тому true. Повесить все желаемые действия для скрипта, вручную запускаемого из терминала вместо echo true. И запускать, соответственно, указывая console если нужно запустить вручную из терминала. Во всех остальных случаях, включая "запуск по двойному клику", будут выполняться действия из else.

#368231

"xxblx" написал:
Как видим, если запустить ./example console, условие выполняется и по тому true. Повесить все желаемые действия для скрипта, вручную запускаемого из терминала вместо echo true. И запускать, соответственно, указывая console если нужно запустить вручную из терминала. Во всех остальных случаях, включая "запуск по двойному клику", будут выполняться действия из else.
ИМХО лучше наоборот сделать — если запускается по двойному клику, то прописать специальную опцию (в ярлыке), а вот из консоли либо проще ничего не писать, либо дать какой-то важный параметр.
#368234
"drBatty" написал:
ИМХО лучше наоборот сделать — если запускается по двойному клику, то прописать специальную опцию (в ярлыке), а вот из консоли либо проще ничего не писать, либо дать какой-то важный параметр.

Ну да. Так, пожалуй, даже удобней будет.

В любом случае, идею подкинули ТСу, а дальше пусть сам решает как ему удобней.

Войдите или зарегистрируйтесь, чтобы ответить.