CentOS7. Есть скрипт, который ожидает завершения всех скринов данного юзера, имена которых совпадают и именами определённых папок. Всё бы работало, да только меня смущает мой костыль из 2-х грепов и то, что, как я понял, у переменной wt своя зона видимости (с учётом того, что в if будет true) так как если поставить перед концом главного цикла 'echo $wt' мы получим всегда 'skip' а если поставить после 'sleep 5' то всегда 'wait'.
Сейчас у меня даже если '$server == $screen' «Waiting for $server» у меня появляется 1 раз при любом sleep и оставшимся screen консолью, а надо подправить так, чтобы «пока у данного пользователя в screen есть консоли, имя у которых равны этим папкам — ждать». Также я бы хотел узнать более «эстетичный» способ находжения имён консолек скринов. Так как я недавно начал разбираться в баше и его скриптинге я, скорее всего, упустил какую-то очевидную деталь.
wt='wait'
while [ $wt == 'wait' ]
do
wt='skip'
ls /opt/msm/servers | while read server
do
sudo -u msm screen -ls | grep -Eo "^[[:space:]][0-9]+\.[A-Za-z0-9_-]+" | grep -Eo "[A-Za-z0-9_-]+$" | while read screen
do
if [ $server == $screen ] ;
then
wt='wait'
echo "Waiting for $server"
sleep 5
fi
done
done
done