Завершить процесс (Например, браузера)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

foma123
Сообщения: 125

Re: Завершить процесс

Сообщение foma123 »

Игорь, спасибо, если б не вы я б стоького не вспомнил )).
Добавлено (18:18):
Это не сарказм!
Добавлено (18:22):
кстати wmctrl пробните, но он вроде по заголовку работает, но все же
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

foma123 писал(а):
19.05.2023 18:18
Игорь, спасибо, если б не вы я б стоького не вспомнил )).
Пожалуйста..! :)
Добавлено (19:33):
foma123 писал(а):
19.05.2023 18:18
Это не сарказм!
Радует... :)
Добавлено (19:36):
foma123 писал(а):
19.05.2023 18:18
кстати wmctrl пробните, но он вроде по заголовку работает, но все же
Попробую. Спасибо! :)
Добавлено (19:54):
Если глубже копнуть, то пользователи:
olecya и ormorph
наставили меня на путь истинный! :)
=> Им огромное спасибо! :)
Последний раз редактировалось igor@igor 21.05.2023 23:17, всего редактировалось 1 раз.
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

UnixNoob писал:
19.05.2023 12:03
Если вам требуется 5 терминалов, то есть tmux или tilix.
А для запуска без ярлычков есть dmenu/rofi. Куда вы в том числе можете скрипты добавлять, при большом желании.
Да я предпочитаю свои скрипты использовать...
С помощью, "своих скриптов", я сколько угодно xterm / lxterminal / другого ПО могу запустить с созданием файлов *.pid в /tmp
(Единственное, у lxterminal один файл .pid созается((()
...
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1367
ОС: Slackware

Re: Завершить процесс

Сообщение UnixNoob »

igor@igor писал:
20.05.2023 22:44
С помощью, "своих скриптов", я сколько угодно xterm / lxterminal / другого ПО могу запустить с созданием файлов *.pid в /tmp
Ага, но не можете одной командой запустить на них все что вы используете, раскидав по вкладкам/табам и другие вещи, как, например, ввести одну и ту же команду на всех пяти терминалах
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Для xterm

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 3. Скрипт: xterm_0.bash для запуска эмулятора терминала xterm

set -x

profiles=(0 1 2 3)

dir="/tmp/xtermpids"
if ! [ -d "${dir}" ] ; then
	mkdir "${dir}"
fi

startxterm_0() {
	local pid prof
	prof=$1

	/usr/bin/xterm -xrm 'XTerm.vt100.allowTitleOps: false' -n "${prof}" &

	pid=$!
	echo ${pid} >"${dir}/${prof}.pid"
	wait
	rm "${dir}/${prof}.pid"
}

for prof in "${profiles[@]}"
do
 	if ! [ -f "${dir}/${prof}.pid" ] ; then
	startxterm_0 "${prof}" &
	fi
done

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 0. Скрипт: k_xterm_all.bash для завершения работы эмулятора терминала xterm
# shellcheck disable=SC2046

set -x

dir="/tmp/xtermpids"

for pidfile in "${dir}"/*
do
	kill $(cat "$pidfile")
done

sleep 0.5

a='/tmp/xtermpids'

printf "\nПросмотр содержимого каталога: /tmp/xtermpids\n\n"

ls -la "${a:?}"

printf "\nУдаление содержимого каталога: /tmp/xtermpids\n\n"

rm -rf "${a:?}"/*

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 0. Скрипт: xterm_1.bash для запуска эмулятора терминала xterm

set -x

profiles=( "$@" )
dir="/tmp/xtermpids"

if ! [ -d "${dir}" ] ; then
	mkdir "${dir}"
fi

startxterm_1() {
	local pid prof
	prof=$1

	/usr/bin/xterm -xrm 'XTerm.vt100.allowTitleOps: false' -n "${prof}" &

	pid=$!
	echo ${pid} >"${dir}/${prof}.pid"
	wait
	rm "${dir}/${prof}.pid"
}

for prof in "${profiles[@]}"
do
	if ! [ -f "${dir}/${prof}.pid" ] ;  then
		startxterm_1 "${prof}" &
	fi
done

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 0. Скрипт: k_xterm_1.bash для завершения работы эмулятора терминала xterm
# shellcheck disable=SC2046

set -x

profiles=( "$@" )

dir="/tmp/xtermpids"

for prof in "${profiles[@]}"
do
	if [ -f "${dir}/${prof}.pid" ] ; then
		kill $(cat "${dir}/${prof}.pid")
	fi
done

И один труъ скрипт:

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 1. Скрипт: buf_cx.sh для запуска ПО по выбору.

"$HOME/opisanie.sh"

OPTIONS="Описание_[выполнение_скрипта:_opisanie.sh] Запуск_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_parcellite_0.bash] Завершение_работы_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_k_parcellite_0.bash] Запуск_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_parcellite_1.bash] Завершение_работы_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_k_parcellite_1.bash] Запуск_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_parcellite_0_1.bash] Завершение_работы_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_k_parcellite_0_1.bash] Запуск_хранителя_экрана:_xscreensaver-demo_и_менеджера_буфера_обмена:_parcellite_._Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xscreen2.sh] Завершение_работы_хранителя_экрана_[выполнение_скрипта:_k_xscreen2.sh] Запуск_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_xscreen.sh] Завершение_работы_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_k_xscreen.sh] Просмотр_состояния_DPMS_[выполнение_скрипта:_xset_sost.sh] Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xset.sh] Завершение_процесса_xset_[выполнение_скрипта:_k_xset.sh] Подскрипт_для_запуска_ПО_по_выбору_[выполнение_скрипта:_zx_buf_po.bash] Завершение_процесса:_zx_buf_po.bash_[выполнение_скрипта:_k_zx_buf_po.bash] Память_[выполнение_скрипта:_free.sh] Запуск_полной_цепи_линии_[выполнение_скрипта:_all.sh] Завершение_работы_полной_цепи_линии_[выполнение_скрипта:_k_all.sh] Запуск_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_xterm_0.bash] Завершение_работы_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_k_xterm_all.bash] Запуск_ФМ_MC_[выполнение_скрипта:_mc_0.bash] Завершение_работы_ФМ_MC_[выполнение_скрипта:_k_mc_0.bash] Завершение_процесса:_zx_buf_cx.bash_[выполнение_скрипта:_k_zx_buf_cx.bash] Завершение_работы_скрипта:__buf_cx.sh"

#Запуск_или_завершение_работы_браузеров_firefox_[выполнение_скрипта:_z_zap_f_xterm.bash] 

printf "\n"
select opt in $OPTIONS; do

               if [ "$opt" = "Завершение_работы_скрипта:__buf_cx.sh" ]; then
                printf "\nЗавершение работы скрипта: buf_cx.sh выполнено успешно\n"
		sleep 3
                exit
#		#"$HOME/k_zx_buf_cx.bash"

               elif [ "$opt" = "Описание_[выполнение_скрипта:_opisanie.sh]" ]; then
                 printf "\nВыполнен cкрипт: opisanie.sh\n"
                 "$HOME/opisanie.sh"

               elif [ "$opt" = "Запуск_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_parcellite_0.bash]" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0.bash\n"
                "$HOME/parcellite_0.bash"

               elif [ "$opt" = "Завершение_работы_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_k_parcellite_0.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0.bash\n"
                "$HOME/k_parcellite_0.bash"

               elif [ "$opt" = "Запуск_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_parcellite_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: parcellite_1.bash\n"
                "$HOME/parcellite_1.bash"

               elif [ "$opt" = "Завершение_работы_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_k_parcellite_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_1.bash\n"
                "$HOME/k_parcellite_1.bash"

               elif [ "$opt" = "Запуск_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_parcellite_0_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0_1.bash\n"
                "$HOME/parcellite_0_1.bash"

               elif [ "$opt" = "Завершение_работы_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_k_parcellite_0_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0_1.bash\n"
                "$HOME/k_parcellite_0_1.bash"

               elif [ "$opt" = "Запуск_хранителя_экрана:_xscreensaver-demo_и_менеджера_буфера_обмена:_parcellite_._Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xscreen2.sh]" ]; then
                 printf "\nВыполнен cкрипт: xscreen2.sh\n"
                "$HOME/xscreen2.sh"

               elif [ "$opt" = "Завершение_работы_хранителя_экрана_[выполнение_скрипта:_k_xscreen2.sh]" ]; then
                 printf "\nВыполнен cкрипт: k_xscreen2.sh\n"
                "$HOME/k_xscreen2.sh"

               elif [ "$opt" = "Запуск_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_xscreen.sh]" ]; then
                 printf "\nВыполнен cкрипт: xscreen.sh\n"
                "$HOME/xscreen.sh" &

               elif [ "$opt" = "Завершение_работы_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_k_xscreen.sh]" ]; then
                 printf "\nВыполнен cкрипт: k_xscreen.sh\n"
                "$HOME/k_xscreen.sh"

               elif [ "$opt" = "Просмотр_состояния_DPMS_[выполнение_скрипта:_xset_sost.sh]" ]; then
                 printf "\nВыполнен cкрипт: xset_sost.sh\n"
                "$HOME/xset_sost.sh"

               elif [ "$opt" = "Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xset.sh]" ]; then 
                 printf "\nВыполнен cкрипт: xset.sh\n"
                "$HOME/xset.sh"

               elif [ "$opt" = "Завершение_процесса_xset_[выполнение_скрипта:_k_xset.sh]" ]; then
                 printf "\nВыполнен cкрипт: k_xset.sh\n"
                "$HOME/k_xset.sh"

               elif [ "$opt" = "Подскрипт_для_запуска_ПО_по_выбору_[выполнение_скрипта:_zx_buf_po.bash]" ]; then
                 printf "\nВыполнен скрипт: zx_buf_po.bash\n"
                "$HOME/zx_buf_po.bash"

elif [ "$opt" = "Завершение_процесса:_zx_buf_po.bash_[выполнение_скрипта:_k_zx_buf_po.bash]" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_po.bash\n\n"

                 sleep 3

                "$HOME/k_zx_buf_po.bash"

               elif [ "$opt" = "Память_[выполнение_скрипта:_free.sh]" ]; then
                 printf "\nВыполнен cкрипт: free.sh\n"
                "$HOME/free.sh"

               elif [ "$opt" = "Запуск_полной_цепи_линии_[выполнение_скрипта:_all.sh]" ]; then
                 printf "\nВыполнен cкрипт: all.sh\n"
                "$HOME/all.sh"

               elif [ "$opt" = "Завершение_работы_полной_цепи_линии_[выполнение_скрипта:_k_all.sh]" ]; then
                printf "\nВыполнен скрипт: k_all.sh\n"
                "$HOME/k_all.sh"

	       elif [ "$opt" = "Запуск_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_xterm_0.bash]" ]; then
                 printf "\nВыполнен скрипа: xterm_0.bash\n"
                "$HOME/xterm_0.bash"

               elif [ "$opt" = "Завершение_работы_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_k_xterm_all.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_xterm_all.bash\n"
                "$HOME/k_xterm_all.bash"

#*****************************************

		elif [ "$opt" = "Запуск_ФМ_MC_[выполнение_скрипта:_mc_0.bash]" ]; then
                 printf "\nВыполнен скрипа: mc_0.bash\n"
                "$HOME/mc_0.bash"

               elif [ "$opt" = "Завершение_работы_ФМ_MC_[выполнение_скрипта:_k_mc_0.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_mc_0.bash\n"
                "$HOME/k_mc_0.bash"

#****************************************

#               elif [ "$opt" = "Запуск_или_завершение_работы_браузеров_firefox_[выполнение_скрипта:_z_zap_f_xterm.bash]" ]; then
#		printf "\nВыполнен cкрипт: z_zap_f_xterm.bash\n"
#		"$HOME/z_zap_f_xterm.bash"

                 elif [ "$opt" = "Завершение_процесса:_zx_buf_cx.bash_[выполнение_скрипта:_k_zx_buf_cx.bash]" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_cx.bash\n\n"

                 sleep 3

                "$HOME/k_zx_buf_cx.bash"

#Завершить_процесс:_zx_buf_cx.bash

               else
                clear
               printf "\nВы, ввели неверное значение! Пожалуйста, попробуйте еще раз!\n"
               fi
               done


#k_zx_buf_cx.bash

#zx_buf_cx.bash

#parcellite_1.bash
#k_parcellite_1.bash

#parcellite_0_1.bash
#k_parcellite_0_1.bash


#z_zap_f_xterm.bash
#zx_buf_po.bash

Который запускается при старте X'ов
.xinitrc

Код: Выделить всё

#"$HOME"/po_buf_cx.sh 

"$HOME"/zx_buf_cx.bash

exec fluxbox

Лучше так. Зато, c корректым завершением каждого процесса. Хоть и у скрипта buf_cx.sh
"индусский стиль написания"... :)
...
Добавлено (00:22):
UnixNoob писал:
21.05.2023 00:13
Ага, но не можете одной командой запустить на них все что вы используете, раскидав по вкладкам/табам и другие вещи, как, например, ввести одну и ту же команду на всех пяти терминалах
И по Вашему совету (Вашим методам) *.pid файл процесса создаётся..?
...
Добавлено (00:40):
UnixNoob писал:
21.05.2023 00:13
Ага, но не можете одной командой запустить на них все что вы используете, раскидав по вкладкам/табам и другие вещи, как, например, ввести одну и ту же команду на всех пяти терминалах
=> Мне стоит лучше "пощупать" ...
...
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1367
ОС: Slackware

Re: Завершить процесс

Сообщение UnixNoob »

igor@igor
К счастью, для меня, люди написали ОС, менеджеры процессов и другие чудесные вещи и теперь я могу нажать, в моем случае, Cmd+Q и закрыть приложение. А что FF закрылся корректно, при желании, могу увидеть по потреблению ОЗУ, которое отображается у меня на панеле.
Пока у меня нет поводов не доверять работе системы в управлении процессами. А если я каждое приложение, что запускается в системе буду ручками открывать/закрывать, боюсь это меня сильно измотает :)
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

UnixNoob
А я вот на каждую софтину (не только на лису) сделал создание *.pid файла...
...
И => могу либо "прибить" процесс из труъ скрипта выбора ПО, либо осуществить выход по ctrl+Q / alt+F4 // закрыть через "крестик" софтину...
...
Сделал всё это, для того чтобы ПО конкретно завершалось и память не "утекала" ...
...
Добавлено (22:53):
И => пользователю Bizdelnick
тоже огромное спасибо! :)
Он - первый наставил меня на путь истинный (речь про *.pid файлы на процесс лисы)
А я на каждый процесс / каждую софтину создаю *.pid файл...
...
Спасибо сказали:
foma123
Сообщения: 125

Re: Завершить процесс

Сообщение foma123 »

Игорь Ятндесбраузер пробните в принцнее не плох )))
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1367
ОС: Slackware

Re: Завершить процесс

Сообщение UnixNoob »

foma123 писал(а):
22.05.2023 06:00
Игорь Ятндесбраузер пробните в принцнее не плох )))
Самое время, когда Яндекс покинул основатель, а президент одобряет продажу контрольного пакета, его попробовать!
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

foma123 писал(а):
22.05.2023 06:00
Игорь Ятндесбраузер пробните в принцнее не плох )))
Спасибо!
Попробую...
...
Добавлено (13:43):
UnixNoob писал:
22.05.2023 12:14
Самое время, когда Яндекс покинул основатель, а президент одобряет продажу контрольного пакета, его попробовать!
А от этого качество браузера ниже?
Спасибо сказали:
foma123
Сообщения: 125

Re: Завершить процесс

Сообщение foma123 »

Ну я для себя неожиданно waterfox обнаружил, никогда бы не подумал , что FF так здорово работать может
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

foma123 писал(а):
23.05.2023 05:05
Ну я для себя неожиданно waterfox обнаружил, никогда бы не подумал , что FF так здорово работать может
Я всегда "лису" использовал / ипользую (настраивается "тонко"...) => отличный браузер..!
ЕМНИП яндекс браузер чем-то на алису похож ... (или как там)
В любом случае, нужно "поделку" от яндекса "пощупать" )))
...
Добавлено (13:41):
Waterfox на FF запилен.
И смысл его использовать?
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Привел в порядок..:
.xinitrc

Код: Выделить всё

"$HOME"/zx_buf_cx.bash

exec fluxbox

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 0. Скрипт: zx_buf_cx.bash для запуска скрипта buf_cx.sh

set -x

profiles=(zxr_buf_cx)

dir="/tmp/zx_buf_cx"
if ! [ -d "${dir}" ] ; then
	mkdir "${dir}"
fi

start_zx_buf_cx_0() {
	local pid prof
	prof=$1

	/usr/bin/xterm -xrm 'XTerm.vt100.allowTitleOps: false' -e "$HOME/buf_cx.sh" -n "${prof}" &

	pid=$!
	echo ${pid} >"${dir}/${prof}.pid"
	wait
	rm "${dir}/${prof}.pid"
}

for prof in "${profiles[@]}"
do
 	if ! [ -f "${dir}/${prof}.pid" ] ; then
	start_zx_buf_cx_0 "${prof}" &
	fi
done

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 0. Скрипт: k_zx_buf_cx.bash для завершения работы скриптов buf_cx.sh и zx_buf_cx.bash
# shellcheck disable=SC2046

set -x

dir="/tmp/zx_buf_cx"

for pidfile in "${dir}"/*
do
	kill $(cat "$pidfile")
done

sleep 0.5

a='/tmp/zx_buf_cx'

printf "\nПросмотр содержимого каталога: /tmp/zx_buf_cx\n\n"

ls -la "${a:?}"

printf "\nУдаление содержимого каталога: /tmp/zx_buf_cx\n\n"

rm -rf "${a:?}"/*

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 3. Скрипт: buf_cx.sh для запуска ПО по выбору.

OPTIONS="Запуск_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_parcellite_0.bash] Завершение_работы_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_k_parcellite_0.bash] Запуск_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_parcellite_1.bash] Завершение_работы_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_k_parcellite_1.bash] Запуск_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_parcellite_0_1.bash] Завершение_работы_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_k_parcellite_0_1.bash] Запуск_хранителя_экрана:_xscreensaver-demo_и_менеджера_буфера_обмена:_parcellite2_[выполнение_скрипта:_sv_xscreensaver_2.sh] Завершение_работы_хранителя_экрана_и_parcellite2_[выполнение_скрипта:_k_sv_xscreensaver_2.sh] Запуск_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_sv_xscreensaver.sh] Завершение_работы_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_k_sv_xscreensaver.sh] Просмотр_состояния_DPMS_[выполнение_скрипта:_xset_sost.sh] Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xset.sh] Завершение_процесса_xset_[выполнение_скрипта:_k_xset.sh] Подскрипт_для_запуска_ПО_по_выбору_[выполнение_скрипта:_zx_buf_po.bash] Завершение_процесса:_zx_buf_po.bash_[выполнение_скрипта:_k_zx_buf_po.bash] Память_[выполнение_скрипта:_free.sh] Запуск_эмулятора_терминала_lxterminal_[выполнение_скрипта:_lxterminal_0.bash] Завершение_работы_эмулятора_терминала_lxterminal_[выполнение_скрипта:_k_lxterminal_0.bash] Запуск_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_xterm_0.bash] Завершение_работы_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_k_xterm_all.bash] Запуск_ФМ_MC_[выполнение_скрипта:_mc_0.bash] Завершение_работы_ФМ_MC_[выполнение_скрипта:_k_mc_0.bash] Завершение_процесса:_zx_buf_cx.bash_[выполнение_скрипта:_k_zx_buf_cx.bash] Завершение_работы_скрипта:__buf_cx.sh"

select opt in $OPTIONS; do

               if [ "$opt" = "Завершение_работы_скрипта:__buf_cx.sh" ]; then
                printf "\nЗавершение работы скрипта: buf_cx.sh выполнено успешно\n"
		sleep 3
                exit
		#"$HOME/k_zx_buf_cx.bash"

               elif [ "$opt" = "Запуск_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_parcellite_0.bash]" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0.bash\n"
                "$HOME/parcellite_0.bash"

               elif [ "$opt" = "Завершение_работы_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_k_parcellite_0.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0.bash\n"
                "$HOME/k_parcellite_0.bash"

               elif [ "$opt" = "Запуск_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_parcellite_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: parcellite_1.bash\n"
                "$HOME/parcellite_1.bash"

               elif [ "$opt" = "Завершение_работы_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_k_parcellite_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_1.bash\n"
                "$HOME/k_parcellite_1.bash"

               elif [ "$opt" = "Запуск_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_parcellite_0_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0_1.bash\n"
                "$HOME/parcellite_0_1.bash"

               elif [ "$opt" = "Завершение_работы_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_k_parcellite_0_1.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0_1.bash\n"
                "$HOME/k_parcellite_0_1.bash"

               elif [ "$opt" = "Запуск_хранителя_экрана:_xscreensaver-demo_и_менеджера_буфера_обмена:_parcellite2_[выполнение_скрипта:_sv_xscreensaver_2.sh]" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver_2.sh\n"
                "$HOME/sv_xscreensaver_2.sh"

               elif [ "$opt" = "Завершение_работы_хранителя_экрана_и_parcellite2_[выполнение_скрипта:_k_sv_xscreensaver_2.sh]" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver_2.sh\n"
                "$HOME/k_sv_xscreensaver_2.sh"

               elif [ "$opt" = "Запуск_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_sv_xscreensaver.sh]" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver.sh\n"
                "$HOME/sv_xscreensaver.sh"

               elif [ "$opt" = "Завершение_работы_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_k_sv_xscreensaver.sh]" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver.sh\n"
                "$HOME/k_sv_xscreensaver.sh"

               elif [ "$opt" = "Просмотр_состояния_DPMS_[выполнение_скрипта:_xset_sost.sh]" ]; then
                 printf "\nВыполнен cкрипт: xset_sost.sh\n"
                "$HOME/xset_sost.sh"

               elif [ "$opt" = "Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xset.sh]" ]; then 
                 printf "\nВыполнен cкрипт: xset.sh\n"
                "$HOME/xset.sh"

               elif [ "$opt" = "Завершение_процесса_xset_[выполнение_скрипта:_k_xset.sh]" ]; then
                 printf "\nВыполнен cкрипт: k_xset.sh\n"
                "$HOME/k_xset.sh"

               elif [ "$opt" = "Подскрипт_для_запуска_ПО_по_выбору_[выполнение_скрипта:_zx_buf_po.bash]" ]; then
                 printf "\nВыполнен скрипт: zx_buf_po.bash\n"
                "$HOME/zx_buf_po.bash"

               elif [ "$opt" = "Завершение_процесса:_zx_buf_po.bash_[выполнение_скрипта:_k_zx_buf_po.bash]" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_po.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_po.bash"

               elif [ "$opt" = "Память_[выполнение_скрипта:_free.sh]" ]; then
                 printf "\nВыполнен cкрипт: free.sh\n"
                "$HOME/free.sh"

               elif [ "$opt" = "Запуск_эмулятора_терминала_lxterminal_[выполнение_скрипта:_lxterminal_0.bash]" ]; then
                 printf "\nВыполнен cкрипт: lxterminal_0.bash\n"
                "$HOME/lxterminal_0.bash"

               elif [ "$opt" = "Завершение_работы_эмулятора_терминала_lxterminal_[выполнение_скрипта:_k_lxterminal_0.bash]" ]; then
                printf "\nВыполнен скрипт: k_lxterminal_0.bash\n"
                "$HOME/k_lxterminal_0.bash"

	       elif [ "$opt" = "Запуск_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_xterm_0.bash]" ]; then
                 printf "\nВыполнен скрипа: xterm_0.bash\n"
                "$HOME/xterm_0.bash"

               elif [ "$opt" = "Завершение_работы_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_k_xterm_all.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_xterm_all.bash\n"
                "$HOME/k_xterm_all.bash"

		elif [ "$opt" = "Запуск_ФМ_MC_[выполнение_скрипта:_mc_0.bash]" ]; then
                 printf "\nВыполнен скрипа: mc_0.bash\n"
                "$HOME/mc_0.bash"

               elif [ "$opt" = "Завершение_работы_ФМ_MC_[выполнение_скрипта:_k_mc_0.bash]" ]; then
                 printf "\nВыполнен cкрипт: k_mc_0.bash\n"
                "$HOME/k_mc_0.bash"

               elif [ "$opt" = "Завершение_процесса:_zx_buf_cx.bash_[выполнение_скрипта:_k_zx_buf_cx.bash]" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_cx.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_cx.bash"

               else
                clear
               printf "\nВы, ввели неверное значение! Пожалуйста, попробуйте еще раз!\n"
               fi
               done

Добавлено (10:48):
Лучше так. Моё предположение. А, Вы, как считаете?
Скажите, пожалуйста.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

И не лень кучу раз набивать тексты пунктов, рискуя ошибиться в какой-нибудь букве? И при необходимости что-то изменить придётся везде править.
Используйте переменные.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

А вот остальные скрипты мне архивом на форум отправлять?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

igor@igor писал:
24.05.2023 11:38
А вот остальные скрипты мне архивом на форум отправлять?
Если хотите, чтобы их точно никто не смотрел, то да. Если же цель обратная, выложите в публичный git.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Bizdelnick писал:
24.05.2023 11:19
И не лень кучу раз набивать тексты пунктов, рискуя ошибиться в какой-нибудь букве? И при необходимости что-то изменить придётся везде править.
Используйте переменные.
Спасибо! Нужно на переменных скрипт выбора ПО (buf_cx.sh) реализовать. Точно.
Попробую...
Добавлено (11:49):
Bizdelnick писал:
24.05.2023 11:45
Если хотите, чтобы их точно никто не смотрел, то да. Если же цель обратная, выложите в публичный git.
Понятно. Спасибо!
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Новая версия скрипта выбора ПО:

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 4. Скрипт: buf_cx.sh для запуска ПО по выбору.

a='Запуск_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_parcellite_0.bash]'

b='Завершение_работы_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_k_parcellite_0.bash]'

c='Запуск_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_parcellite_1.bash]'

d='Завершение_работы_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_k_parcellite_1.bash]'

e='Запуск_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_parcellite_0_1.bash]'

f='Завершение_работы_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_k_parcellite_0_1.bash]'

g='Запуск_хранителя_экрана:_xscreensaver-demo_и_менеджера_буфера_обмена:_parcellite2_[выполнение_скрипта:_sv_xscreensaver_2.sh]'

h='Завершение_работы_хранителя_экрана_и_parcellite2_[выполнение_скрипта:_k_sv_xscreensaver_2.sh]'

i='Запуск_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_sv_xscreensaver.sh]'

j='Завершение_работы_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_k_sv_xscreensaver.sh]'

k='Просмотр_состояния_DPMS_[выполнение_скрипта:_xset_sost.sh]'

l='Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xset.sh]'

m='Завершение_процесса_xset_[выполнение_скрипта:_k_xset.sh]'

n='Подскрипт_для_запуска_ПО_по_выбору_[выполнение_скрипта:_zx_buf_po.bash]'

o='Завершение_процесса:_zx_buf_po.bash_[выполнение_скрипта:_k_zx_buf_po.bash]'

p='Память_[выполнение_скрипта:_free.sh]'

q='Запуск_эмулятора_терминала_lxterminal_[выполнение_скрипта:_lxterminal_0.bash]'

r='Завершение_работы_эмулятора_терминала_lxterminal_[выполнение_скрипта:_k_lxterminal_0.bash]'

s='Запуск_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_xterm_0.bash]'

t='Завершение_работы_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_k_xterm_all.bash]'

u='Запуск_ФМ_MC_[выполнение_скрипта:_mc_0.bash]'

v='Завершение_работы_ФМ_MC_[выполнение_скрипта:_k_mc_0.bash]'

w='Завершение_процесса:_zx_buf_cx.bash_[выполнение_скрипта:_k_zx_buf_cx.bash]'

z='Завершение_работы_скрипта:__buf_cx.sh'


OPTIONS="$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $z"

select opt in $OPTIONS; do

               if [ "$opt" = "$z" ]; then
                printf "\nЗавершение работы скрипта: buf_cx.sh выполнено успешно\n"
		sleep 3
                exit
		#"$HOME/k_zx_buf_cx.bash"

               elif [ "$opt" = "$a" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0.bash\n"
                "$HOME/parcellite_0.bash"

               elif [ "$opt" = "$b" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0.bash\n"
                "$HOME/k_parcellite_0.bash"

               elif [ "$opt" = "$c" ]; then
                 printf "\nВыполнен cкрипт: parcellite_1.bash\n"
                "$HOME/parcellite_1.bash"

               elif [ "$opt" = "$d" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_1.bash\n"
                "$HOME/k_parcellite_1.bash"

               elif [ "$opt" = "$e" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0_1.bash\n"
                "$HOME/parcellite_0_1.bash"

               elif [ "$opt" = "$f" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0_1.bash\n"
                "$HOME/k_parcellite_0_1.bash"

               elif [ "$opt" = "$g" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver_2.sh\n"
                "$HOME/sv_xscreensaver_2.sh"

               elif [ "$opt" = "$h" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver_2.sh\n"
                "$HOME/k_sv_xscreensaver_2.sh"

               elif [ "$opt" = "$i" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver.sh\n"
                "$HOME/sv_xscreensaver.sh"

               elif [ "$opt" = "$j" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver.sh\n"
                "$HOME/k_sv_xscreensaver.sh"

               elif [ "$opt" = "$k" ]; then
                 printf "\nВыполнен cкрипт: xset_sost.sh\n"
                "$HOME/xset_sost.sh"

               elif [ "$opt" = "$l" ]; then
                 printf "\nВыполнен cкрипт: xset.sh\n"
                "$HOME/xset.sh"

               elif [ "$opt" = "$m" ]; then
                 printf "\nВыполнен cкрипт: k_xset.sh\n"
                "$HOME/k_xset.sh"

               elif [ "$opt" = "$n" ]; then
                 printf "\nВыполнен скрипт: zx_buf_po.bash\n"
                "$HOME/zx_buf_po.bash"

               elif [ "$opt" = "$o" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_po.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_po.bash"

               elif [ "$opt" = "$p" ]; then
                 printf "\nВыполнен cкрипт: free.sh\n"
                "$HOME/free.sh"

               elif [ "$opt" = "$q" ]; then
                 printf "\nВыполнен cкрипт: lxterminal_0.bash\n"
                "$HOME/lxterminal_0.bash"

               elif [ "$opt" = "$r" ]; then
                printf "\nВыполнен скрипт: k_lxterminal_0.bash\n"
                "$HOME/k_lxterminal_0.bash"

	       elif [ "$opt" = "$s" ]; then
                 printf "\nВыполнен скрипа: xterm_0.bash\n"
                "$HOME/xterm_0.bash"

               elif [ "$opt" = "$t" ]; then
                 printf "\nВыполнен cкрипт: k_xterm_all.bash\n"
                "$HOME/k_xterm_all.bash"

		elif [ "$opt" = "$u" ]; then
                 printf "\nВыполнен скрипа: mc_0.bash\n"
                "$HOME/mc_0.bash"

               elif [ "$opt" = "$v" ]; then
                 printf "\nВыполнен cкрипт: k_mc_0.bash\n"
                "$HOME/k_mc_0.bash"

               elif [ "$opt" = "$w" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_cx.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_cx.bash"

               else
                clear
               printf "\nВы, ввели неверное значение! Пожалуйста, попробуйте еще раз!\n"
               fi
               done

А можно ли как-нибудь лучше сделать (код)?
Скажите, пожалуйста.
Добавлено (20:30):
Я предполагаю, что никак "топорные" скрипты не улучшить...
Ввод переменных - предел улучшения.
Хотя может я и ошибаюсь.
...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

igor@igor писал:
24.05.2023 19:38
А можно ли как-нибудь лучше сделать (код)?
Убрать ненужную переменную OPTIONS, тогда в текстах пунктов можно станет использовать пробелы. Ну и имена переменных a, b, c… ни о чём не говорят, стоит всё же сделать их читаемыми (частично совпадающими с именами вызываемых скриптов, например).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Bizdelnick писал:
25.05.2023 08:37
Убрать ненужную переменную OPTIONS, тогда в текстах пунктов можно станет использовать пробелы. Ну и имена переменных a, b, c… ни о чём не говорят, стоит всё же сделать их читаемыми (частично совпадающими с именами вызываемых скриптов, например).
Понятно. Переделаю. Спасибо!
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Всё равно, от переменной OPTIONS не получается уйти(((
Я заменил OPTIONS переменную на переменную zz
Новая версия скрипта buf_cx

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 5. Скрипт: buf_cx.sh для запуска ПО по выбору.

a='Запуск_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_parcellite_0.bash]'

b='Завершение_работы_менеджера_буфера_обмена_parcellite_[выполнение_скрипта:_k_parcellite_0.bash]'

c='Запуск_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_parcellite_1.bash]'

d='Завершение_работы_менеджера_буфера_обмена_parcellite2_[выполнение_скрипта:_k_parcellite_1.bash]'

e='Запуск_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_parcellite_0_1.bash]'

f='Завершение_работы_менеджеров_буфера_обмена_parcellite_и_parcellite2_[выполнение_скрипта:_k_parcellite_0_1.bash]'

g='Запуск_хранителя_экрана:_xscreensaver-demo_и_менеджера_буфера_обмена:_parcellite2_[выполнение_скрипта:_sv_xscreensaver_2.sh]'

h='Завершение_работы_хранителя_экрана_и_parcellite2_[выполнение_скрипта:_k_sv_xscreensaver_2.sh]'

i='Запуск_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_sv_xscreensaver.sh]'

j='Завершение_работы_хранителя_экрана:_xscreensaver-demo_[выполнение_скрипта:_k_sv_xscreensaver.sh]'

k='Просмотр_состояния_DPMS_[выполнение_скрипта:_xset_sost.sh]'

l='Отключение_DPMS_с_помощью_xset_[выполнение_скрипта:_xset.sh]'

m='Завершение_процесса_xset_[выполнение_скрипта:_k_xset.sh]'

n='Подскрипт_для_запуска_ПО_по_выбору_[выполнение_скрипта:_zx_buf_po.bash]'

o='Завершение_процесса:_zx_buf_po.bash_[выполнение_скрипта:_k_zx_buf_po.bash]'

p='Память_[выполнение_скрипта:_free.sh]'

q='Запуск_эмулятора_терминала_lxterminal_[выполнение_скрипта:_lxterminal_0.bash]'

r='Завершение_работы_эмулятора_терминала_lxterminal_[выполнение_скрипта:_k_lxterminal_0.bash]'

s='Запуск_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_xterm_0.bash]'

t='Завершение_работы_эмулятора-/-ов_терминала_xterm_[выполнение_скрипта:_k_xterm_all.bash]'

u='Запуск_ФМ_MC_[выполнение_скрипта:_mc_0.bash]'

v='Завершение_работы_ФМ_MC_[выполнение_скрипта:_k_mc_0.bash]'

w='Завершение_процесса:_zx_buf_cx.bash_[выполнение_скрипта:_k_zx_buf_cx.bash]'

z='Завершение_работы_скрипта:__buf_cx.sh'


#OPTIONS="$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $z"


zz="$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $z"


#select opt in $OPTIONS; do


select opt in $zz; do

               if [ "$opt" = "$z" ]; then
                printf "\nЗавершение работы скрипта: buf_cx.sh выполнено успешно\n"
		sleep 3
                exit
		#"$HOME/k_zx_buf_cx.bash"

               elif [ "$opt" = "$a" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0.bash\n"
                "$HOME/parcellite_0.bash"

               elif [ "$opt" = "$b" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0.bash\n"
                "$HOME/k_parcellite_0.bash"

               elif [ "$opt" = "$c" ]; then
                 printf "\nВыполнен cкрипт: parcellite_1.bash\n"
                "$HOME/parcellite_1.bash"

               elif [ "$opt" = "$d" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_1.bash\n"
                "$HOME/k_parcellite_1.bash"

               elif [ "$opt" = "$e" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0_1.bash\n"
                "$HOME/parcellite_0_1.bash"

               elif [ "$opt" = "$f" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0_1.bash\n"
                "$HOME/k_parcellite_0_1.bash"

               elif [ "$opt" = "$g" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver_2.sh\n"
                "$HOME/sv_xscreensaver_2.sh"

               elif [ "$opt" = "$h" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver_2.sh\n"
                "$HOME/k_sv_xscreensaver_2.sh"

               elif [ "$opt" = "$i" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver.sh\n"
                "$HOME/sv_xscreensaver.sh"

               elif [ "$opt" = "$j" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver.sh\n"
                "$HOME/k_sv_xscreensaver.sh"

               elif [ "$opt" = "$k" ]; then
                 printf "\nВыполнен cкрипт: xset_sost.sh\n"
                "$HOME/xset_sost.sh"

               elif [ "$opt" = "$l" ]; then
                 printf "\nВыполнен cкрипт: xset.sh\n"
                "$HOME/xset.sh"

               elif [ "$opt" = "$m" ]; then
                 printf "\nВыполнен cкрипт: k_xset.sh\n"
                "$HOME/k_xset.sh"

               elif [ "$opt" = "$n" ]; then
                 printf "\nВыполнен скрипт: zx_buf_po.bash\n"
                "$HOME/zx_buf_po.bash"

               elif [ "$opt" = "$o" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_po.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_po.bash"

               elif [ "$opt" = "$p" ]; then
                 printf "\nВыполнен cкрипт: free.sh\n"
                "$HOME/free.sh"

               elif [ "$opt" = "$q" ]; then
                 printf "\nВыполнен cкрипт: lxterminal_0.bash\n"
                "$HOME/lxterminal_0.bash"

               elif [ "$opt" = "$r" ]; then
                printf "\nВыполнен скрипт: k_lxterminal_0.bash\n"
                "$HOME/k_lxterminal_0.bash"

	       elif [ "$opt" = "$s" ]; then
                 printf "\nВыполнен скрипа: xterm_0.bash\n"
                "$HOME/xterm_0.bash"

               elif [ "$opt" = "$t" ]; then
                 printf "\nВыполнен cкрипт: k_xterm_all.bash\n"
                "$HOME/k_xterm_all.bash"

		elif [ "$opt" = "$u" ]; then
                 printf "\nВыполнен скрипа: mc_0.bash\n"
                "$HOME/mc_0.bash"

               elif [ "$opt" = "$v" ]; then
                 printf "\nВыполнен cкрипт: k_mc_0.bash\n"
                "$HOME/k_mc_0.bash"

               elif [ "$opt" = "$w" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_cx.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_cx.bash"

               else
                clear
               printf "\nВы, ввели неверное значение! Пожалуйста, попробуйте еще раз!\n"
               fi
               done

Как быть?
Скажите, пожалуйста.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

igor@igor писал:
27.05.2023 12:38
Я заменил OPTIONS переменную на переменную zz
Просто не используйте тут лишнюю переменную.

Код: Выделить всё

select opt in "$a" "$b" "$c"; do
Или, коль скоро у Вас всё равно bash, используйте массив. А лучше — два. (Интересно, можно ли тут приспособить ассоциативный массив?)

Код: Выделить всё

#!/bin/bash

opts+=('Запуск менеджера буфера обмена parcellite [выполнение скрипта parcellite_0.bash]')
scripts+=(parcellite_0.bash)

opts+=('Завершение работы менеджера буфера обмена parcellite [выполнение скрипта k_parcellite_0.bash]')
scripts+=(k_parcellite_0.bash)

# и т. д.

select opt in "${opts[@]}"; do
  for (( i=0; i<${#opts[@]}; i++ )); do
    if [ "$opt" = "${opts[$i]}" ]; then
      "${scripts[$i]}" && echo "Выполнен скрипт ${scripts[$i]}" || echo "Ошибка при выполнении ${scripts[$i]}"
      break
    fi
  done
done
P. S. Понятия не имею, зачем может понадобиться вручную запускать и убивать parcellite вместо того, чтобы автоматически запускать его с началом сессии и оставлять работать до её завершения.
P. P. S. Не надо называть переменные a, b, c, zz и т. п. Давайте им осмысленные имена.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Bizdelnick писал:
27.05.2023 13:46
Просто не используйте тут лишнюю переменную.
Спасибо! Понял.
Добавлено (14:07):
Bizdelnick писал:
27.05.2023 13:46
Или, коль скоро у Вас всё равно bash, используйте массив. А лучше — два.
Спасибо! Правда, посложнее дело будет...
...
Добавлено (14:12):
Bizdelnick писал:
27.05.2023 13:46
(Интересно, можно ли тут приспособить ассоциативный массив?)
"Вскрытие" покажет! :)
В смысле, нужно пробовать...
...
Добавлено (14:25):
Bizdelnick писал:
27.05.2023 13:46
P. S. Понятия не имею, зачем может понадобиться вручную запускать и убивать parcellite вместо того, чтобы автоматически запускать его с началом сессии и оставлять работать до её завершения.
Я понимаю, что в .xinitrc можно "запихать" :) / записать вызов parcellite
А вот, например, мне не нужен parcellite
и никакой другой софт, кроме браузера...
...
Вот почему, я со скриптом выбора ПО и заморочился.
+ Корректное "прибитие" / завершение ПО // процесса с удалением файла *.pid из /tmp
...
Добавлено (14:33):
Bizdelnick писал:
27.05.2023 13:46
P. P. S. Не надо называть переменные a, b, c, zz и т. п. Давайте им осмысленные имена.
Да я торопился с вопросом по новой версии скрипта. Честно, не успел(((
Дам конечно, осмысленные имена...
...
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Новая версия скрипта buf_cx.sh

Код: Выделить всё

#!/bin/bash
#2023xxxx Ver. 6. Скрипт: buf_cx.sh для запуска ПО по выбору.

parc_0='Запуск менеджера буфера обмена parcellite [выполнение скрипта: parcellite_0.bash]'

k_parc_0='Завершение работы менеджера буфера обмена parcellite [выполнение скрипта: k_parcellite_0.bash]'

parc_1='Запуск менеджера буфера обмена parcellite2 [выполнение скрипта: parcellite_1.bash]'

k_parc_1='Завершение работы менеджера буфера обмена parcellite2 [выполнение скрипта: k_parcellite_1.bash]'

parc_0_1='Запуск менеджеров буфера обмена parcellite и parcellite2 [выполнение скрипта: parcellite_0_1.bash]'

k_parc_0_1='Завершение работы менеджеров буфера обмена parcellite и parcellite2 [выполнение скрипта:           k_parcellite_0_1.bash]'

xscreen_parc_1='Запуск хранителя экрана: xscreensaver-demo и менеджера буфера обмена: parcellite2 [выполнение      скрипта: sv_xscreensaver_2.sh]'

k_xscreen_parc_1='Завершение работы хранителя экрана и parcellite2 [выполнение скрипта: k_sv_xscreensaver_2.sh]'

xscreen='Запуск хранителя экрана: xscreensaver-demo [выполнение скрипта: sv_xscreensaver.sh]'

k_xscreen='Завершение работы хранителя экрана: xscreensaver-demo [выполнение скрипта: k_sv_xscreensaver.sh]'

dpms_sost='Просмотр состояния DPMS [выполнение скрипта: xset_sost.sh]'

dpms_off='Отключение DPMS с помощью xset [выполнение скрипта: xset.sh]'

dpms_on='Завершение процесса xset [выполнение скрипта: k_xset.sh]'

zx_buf_po='Подскрипт для запуска ПО по выбору [выполнение скрипта: zx_buf_po.bash]'

k_zx_buf_po='Завершение процесса: zx_buf_po.bash [выполнение скрипта: k_zx_buf_po.bash]'

free='Память [выполнение скрипта: free.sh]'

lxterminal='Запуск эмулятора терминала lxterminal [выполнение скрипта: lxterminal_0.bash]'

k_lxterminal='Завершение работы эмулятора терминала lxterminal [выполнение скрипта: k_lxterminal_0.bash]'

xterm='Запуск эмулятора-/-ов терминала xterm [выполнение скрипта: xterm_0.bash]'

k_xterm='Завершение работы эмулятора-/-ов_терминала xterm [выполнение скрипта: k_xterm_all.bash]'

mc='Запуск ФМ MC [выполнение скрипта: mc_0.bash]'

k_mc='Завершение работы ФМ MC [выполнение скрипта: k_mc_0.bash]'

k_zx_buf_cx='Завершение процесса: zx_buf_cx.bash [выполнение скрипта: k_zx_buf_cx.bash]'

buf_cx_exit='Завершение работы скрипта: buf_cx.sh'


select opt in "$parc_0" "$k_parc_0" "$parc_1" "$k_parc_1" "$parc_0_1" "$k_parc_0_1" "$xscreen_parc_1" "$k_xscreen_parc_1" "$xscreen" "$k_xscreen" "$dpms_sost" "$dpms_off" "$dpms_on" "$zx_buf_po" "$k_zx_buf_po" "$free" "$lxterminal" "$k_lxterminal" "$xterm" "$k_xterm" "$mc" "$k_mc" "$k_zx_buf_cx" "$buf_cx_exit"  ;  do


               if [ "$opt" = "$buf_cx_exit" ]; then
                printf "\nЗавершение работы скрипта: buf_cx.sh выполнено успешно\n"
		sleep 3
                exit
		#"$HOME/k_zx_buf_cx.bash"

               elif [ "$opt" = "$parc_0" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0.bash\n"
                "$HOME/parcellite_0.bash"

               elif [ "$opt" = "$k_parc_0" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0.bash\n"
                "$HOME/k_parcellite_0.bash"

               elif [ "$opt" = "$parc_1" ]; then
                 printf "\nВыполнен cкрипт: parcellite_1.bash\n"
                "$HOME/parcellite_1.bash"

               elif [ "$opt" = "$k_parc_1" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_1.bash\n"
                "$HOME/k_parcellite_1.bash"

               elif [ "$opt" = "$parc_0_1" ]; then
                 printf "\nВыполнен cкрипт: parcellite_0_1.bash\n"
                "$HOME/parcellite_0_1.bash"

               elif [ "$opt" = "$k_parc_0_1" ]; then
                 printf "\nВыполнен cкрипт: k_parcellite_0_1.bash\n"
                "$HOME/k_parcellite_0_1.bash"

               elif [ "$opt" = "$xscreen_parc_1" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver_2.sh\n"
                "$HOME/sv_xscreensaver_2.sh"

               elif [ "$opt" = "$k_xscreen_parc_1" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver_2.sh\n"
                "$HOME/k_sv_xscreensaver_2.sh"

               elif [ "$opt" = "$xscreen" ]; then
                 printf "\nВыполнен cкрипт: sv_xscreensaver.sh\n"
                "$HOME/sv_xscreensaver.sh"

               elif [ "$opt" = "$k_xscreen" ]; then
                 printf "\nВыполнен cкрипт: k_sv_xscreensaver.sh\n"
                "$HOME/k_sv_xscreensaver.sh"

               elif [ "$opt" = "$dpms_sost" ]; then
                 printf "\nВыполнен cкрипт: xset_sost.sh\n"
                "$HOME/xset_sost.sh"

               elif [ "$opt" = "$dpms_off" ]; then
                 printf "\nВыполнен cкрипт: xset.sh\n"
                "$HOME/xset.sh"

               elif [ "$opt" = "$dpms_on" ]; then
                 printf "\nВыполнен cкрипт: k_xset.sh\n"
                "$HOME/k_xset.sh"

               elif [ "$opt" = "$zx_buf_po" ]; then
                 printf "\nВыполнен скрипт: zx_buf_po.bash\n"
                "$HOME/zx_buf_po.bash"

               elif [ "$opt" = "$k_zx_buf_po" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_po.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_po.bash"

               elif [ "$opt" = "$free" ]; then
                 printf "\nВыполнен cкрипт: free.sh\n"
                "$HOME/free.sh"

               elif [ "$opt" = "$lxterminal" ]; then
                 printf "\nВыполнен cкрипт: lxterminal_0.bash\n"
                "$HOME/lxterminal_0.bash"

               elif [ "$opt" = "$k_lxterminal" ]; then
                printf "\nВыполнен скрипт: k_lxterminal_0.bash\n"
                "$HOME/k_lxterminal_0.bash"

	       elif [ "$opt" = "$xterm" ]; then
                 printf "\nВыполнен скрипа: xterm_0.bash\n"
                "$HOME/xterm_0.bash"

               elif [ "$opt" = "$k_xterm" ]; then
                 printf "\nВыполнен cкрипт: k_xterm_all.bash\n"
                "$HOME/k_xterm_all.bash"

		elif [ "$opt" = "$mc" ]; then
                 printf "\nВыполнен скрипа: mc_0.bash\n"
                "$HOME/mc_0.bash"

               elif [ "$opt" = "$k_mc" ]; then
                 printf "\nВыполнен cкрипт: k_mc_0.bash\n"
                "$HOME/k_mc_0.bash"

               elif [ "$opt" = "$k_zx_buf_cx" ]; then
                 printf "\nВыполнен скрипт: k_zx_buf_cx.bash\n\n"
                 sleep 3
                "$HOME/k_zx_buf_cx.bash"

               else
                clear
               printf "\nВы, ввели неверное значение! Пожалуйста, попробуйте еще раз!\n"
               fi
               done

Добавлено (08:25):
Простенько и со вкусом :) (без массива), решил оставить версию скрипта buf_cx.sh
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

igor@igor писал:
28.05.2023 08:10
Простенько и со вкусом
Сложненько и безвкусно. К чему эти однотипные elif? википедия://DRY
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1367
ОС: Slackware

Re: Завершить процесс

Сообщение UnixNoob »

igor@igor
Мне кажется, когда столько else if, то обычно используют case.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Завершить процесс

Сообщение Bizdelnick »

UnixNoob писал:
28.05.2023 12:00
Мне кажется, когда столько else if, то обычно используют case.
Но не в случае, когда в них всех одно и то же.

igor@igor, а зачем Ваш скрипт врёт о выполнении каждого скрипта ещё до того, как тот запущен? И для чего все эти sleep'ы?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2604
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

Из серии выстрели себе в ногу. :D
Спасибо сказали:
igor@igor
Сообщения: 1374
ОС: Debian GNU/Linux, wheezy-amd64

Re: Завершить процесс

Сообщение igor@igor »

Bizdelnick писал:
28.05.2023 11:05
Сложненько и безвкусно. К чему эти однотипные elif? википедия://DRY
Эх! Предполагал, что в этот раз "круто" запилил! А на самом деле... ((((((((((
Добавлено (23:39):
Bizdelnick писал:
29.05.2023 00:02
igor@igor, а зачем Ваш скрипт врёт о выполнении каждого скрипта ещё до того, как тот запущен? И для чего все эти sleep'ы?
Как / почему врёт?? Где sleep'ы?
Скажите, пожалуйста.
Добавлено (23:42):
ormorph писал(а):
29.05.2023 20:31
Из серии выстрели себе в ногу. :D
Эх!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2604
ОС: Gentoo

Re: Завершить процесс

Сообщение ormorph »

igor@igor писал:
29.05.2023 23:31
Как / почему врёт??
У вас в условии присваивание вместо сравнения...
Спасибо сказали:
Ответить