История изменений
Исправление
Psych218,
(текущая версия)
:
почему пофиг на urxvtd? ведь там стоит логическое И а не ИЛИ.
Ну так вот именно поэтому. С логикой проблемы? «Если одна строка пуста И вторая строка пуста, то спать». Конкретно в твоём случае «Если нет urxvt И нет i3bar». Условие верно, когда ОБЕ строки пусты. Когда не запущен ни i3bar ни urxvtd, обе проверяемые строкипусты, соответственно [[ -z ]] это Истина, у тебя Истина && Истина, условие верно. Когда запустился i3bar, одна из проверяемых строк не пуста, соответственно второе условие принимает значение Ложь, а Истина && Ложь == Ложь, соответственно никакого sleep не будет. А через раз срабатывает как раз из-за того, что раньше запустится urxvtd или i3bar. Тебе как раз ИЛИ и нужно было, чтобы сделать то, что ты хотел: «Если не запущет urxvtd ИЛИ не запущен i3bar, то ждать ещё секунду».
Но лучше, конечно, сделать вообще без этого костыля со sleep, а как выше показано, urxvtd же умеет форкаться. Ну и логику идти учить, без понимания элементарной логики не то что компьютером пользоваться, а вообще жить сложно.
Исправление
Psych218,
:
почему пофиг на urxvtd? ведь там стоит логическое И а не ИЛИ.
Ну так вот именно поэтому. С логикой проблемы? «Если одна строка пуста И вторая строка пуста, то спать». Конкретно в твоём случае «Если нет urxvt И нет i3bar». Условие верно, когда ОБЕ строки пусты. Когда не запущен ни i3bar ни urxvtd, обе проверяемые строкипусты, соответственно [[ -z ]] это Истина, у тебя Истина && Истина, условие верно. Когда запустился i3bar, одна из проверяемых строк не пуста, соответственно второе условие принимает значение Ложь, а Истина && Ложь == Ложь, соответственно никакого sleep не будет. А через раз срабатывает как раз из-за того, что раньше запустится urxvtd или i3bar. Тебе как раз ИЛИ и нужно было, чтобы сделать то, что ты хотел.
Но лучше, конечно, сделать вообще без этого костыля со sleep, а как выше показано, urxvtd же умеет форкаться. Ну и логику идти учить, без понимания элементарной логики не то что компьютером пользоваться, а вообще жить сложно.
Исходная версия
Psych218,
:
почему пофиг на urxvtd? ведь там стоит логическое И а не ИЛИ.
Ну так вот именно поэтому. С логикой проблемы? «Если одна строка пуста И вторая строка пуста, то спать». Конкретно в твоём случае «Если нет urxvt И нет i3bar». Условие верно, когда ОБЕ строки пусты. Когда не запущен ни i3bar ни urxvtd, обе проверяемые строкипусты, соответственно [[ -z ]] это Истина, у тебя Истина && Истина, условие верно. Когда запустился i3bar, одна из проверяемых строк не пуста, соответственно второе условие принимает значение Ложь, а Истина && Ложь == Ложь, соответственно никакого sleep не будет. А через раз срабатывает как раз из-за того, что раньше запустится urxvtd или i3bar. Тебе как раз ИЛИ и нужно было, чтобы сделать то, что ты хотел. Но лучше, конечно, сделать вообще без этого костыля со sleep, а логику идти учить, без понимания элементарной логики не то что компьютером пользоваться, а вообще жить сложно.