Страница 1 из 1

Объединеие условий в операторе if

Добавлено: 2008-12-10 11:19:30
BAV_Lug
Вопрос собственно такой
Как правильно записать такую проверку

Код: Выделить всё

if [ ! -r /var/run/mpd1.pid ] и [ ! -r /var/run/mpd2.pid ]
then 
......

Re: Объединеие условий в операторе if

Добавлено: 2008-12-10 13:37:46
hizel

Код: Выделить всё

if [ ! -r /var/run/mpd1.pid -a ! -r /var/run/mpd2.pid ];
then

Re: Объединеие условий в операторе if

Добавлено: 2008-12-10 14:11:03
Гость
еще можно

Код: Выделить всё

if [ ! -r /var/run/mpd1.pid ] && [ ! -r /var/run/mpd2.pid ]
then
    # code
fi
или

Код: Выделить всё

if ! { [ -r /var/run/mpd1.pid ] || [ -r /var/run/mpd2.pid ]; }
then
    # code
fi
или

Код: Выделить всё

if ! [ -r /var/run/mpd1.pid -o -r /var/run/mpd2.pid ]
then
    # code
fi
или

Код: Выделить всё

if [ ! \( -r /var/run/mpd1.pid -o -r /var/run/mpd2.pid \) ]
then
    # code
fi
или

Код: Выделить всё

if ! [ \( -r /var/run/mpd1.pid -o -r /var/run/mpd2.pid \) ]
then
    # code
fi

а все конструкцию вида

Код: Выделить всё

if list
then
    # code
fi
можно заменить на

Код: Выделить всё

list && {
    # code
}
т.е. можно даже так

Код: Выделить всё

[ ! -r /var/run/mpd1.pid ] && [ ! -r /var/run/mpd2.pid ] && {
    # code
}
или так

Код: Выделить всё

[ ! \( -r /var/run/mpd1.pid -o -r /var/run/mpd2.pid \) ] && {
    # code
}
ps, вариаций очень много, но во всех случаех играет роль только exit code = 0 (для логического `и') и exit code > 0 (для логического `или'). Т.е. совершенно необязательно использовать test(1).

Re: Объединеие условий в операторе if

Добавлено: 2008-12-10 15:27:10
BAV_Lug
Всем спасибо за ответы