[Comm] shell logical expressions

Michael Shigorin =?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Пт Авг 17 15:05:22 MSD 2007


On Fri, Aug 17, 2007 at 02:29:05PM +0400, Eugene Prokopiev wrote:
> Нужно выполнить несколько команд, если хотя бы одна вернула не
> 0, тоже вернуть не 0 и выругаться. Делаю примерно так:
> 
> #!/bin/sh
> [ `drbdadm state all | awk -F'/' '{print $1}'` == "Primary" ]
> partition=$?
> grep drbd0 /proc/mounts > /dev/null
> filesystem=$?

Я бы переписал где-то так:

[ `drbdadm state all | awk -F'/' '{print $1}'` == "Primary" ] \
&& grep drbd0 /proc/mounts > /dev/null \
&& exit 0
mail .....

Почитай скрипты из пакетов (с)авторства ldv@ и legion@ (в т.ч.
control, alterator-*) -- там много интересного можно подметить
;-)

У Лёши за последний год или два стиль очень интересный и сжатый
стал.  При этом читается и работает.

> if [ $partition != '0' ] || [ $filesystem != '0' ] ; then
> mail -s "HAD Monitor fail" root << EOF
> drbd state:
> `cat /proc/drbd`
> 
> mount state:
> `grep drbd0 /proc/mounts`
> EOF
> exit 1
> else
> exit 0
> fi
> 
> Но не оставляет ощущение кривизны куска кода с if. Можно правильнее/проще?
> 

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/



Подробная информация о списке рассылки community