LINUX.ORG.RU

История изменений

Исправление 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, а логику идти учить, без понимания элементарной логики не то что компьютером пользоваться, а вообще жить сложно.