andreybold
@andreybold

Как заставить Wait ждать завершения?

test1.sh:
#!/bin/bash

echo test
sleep 5
echo test1
sleep 2


test.sh:
#!/bin/bash

password=`zenity --password`

echo ${password} | sudo -S gnome-terminal -e "./test1.sh"

for word in word1 word2 word3 word4
do
	echo $word
	sleep 1
done


Как можно заставить скрипт test.sh ждать завершения работы команды gnome-terminal?
Пробовал wait в разных вариантах, которые нашёл на просторах интеренета, но ни один не помогает.
После вызова терминала скрипт сразу заходит в цикл.
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
есть простой вариант

shell1.sh
echo $$ >> /tmp/wait.pls
echo Process started
sleep 3
echo Process stopped
rm /temp/wait.pls


shell2.sh
password=`zenity --password`

echo ${password} | sudo -S gnome-terminal -e "./shell1.sh"

while true
do
  if [ ! -f /tmp/wait.pls ] ; then
    echo "Done"
    exit 0
  fi
done
Ответ написан
Комментировать
andreybold
@andreybold Автор вопроса
Нашёл более простой выход: xterm вместо gnome-terminal.
Как оказалось он не проскакивает на следующую команду.

Пример:
#!/bin/bash

# Функция для запуска команды в xterm с определёнными настройками
# 1-й параметр либо команда либо ключ -s для запуска под root
# 2-й параметр либо пустой либо команда
x(){
	font_family=monospace
	font_size=10
	geometry=80x30
	font_color=lightgrey

	if [[ $1 == "-s" ]]; then
		if [[ -n "${password}" ]]; then
			echo ${password} | sudo -S xterm -fa ${font_family} -fs ${font_size} -geometry ${geometry} -fg ${font_color} -e "$2;sleep 2"
		else
			echo "Нужен пароль!"
		fi
	else
		xterm -fa ${font_family} -fs ${font_size} -geometry ${geometry} -fg ${font_color} -e "$1;sleep 2"
	fi
}

# Функция проверки zenity диалогов с возможностью выхода
maybe_exit() {
	if [[ $? -ne 0 ]]; then
		echo "Выход"
		exit $?
	fi
}

#sample
password=`zenity --password`
maybe_exit
x "./test1.sh"
x -s "apt update"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы