On Wed, Apr 23, 2008 at 07:31:35PM +0400, Alexey Gladkov wrote: > > К любым условным конструкциям, в которых "по смыслу" допустим > >ненулевой код возврата. Поэтому "опасно" писать код типа > > > > if my_function ...; then > > Отнюдь. Это стандартное поведение shell. С твоей точки зрения > получается что любая попытка обработать код возврата это опасная > операция т.к. с ключом -e ты не сможешь обработать код возврата > my_function кроме как условной конструкцией. :) Стандартное поведение шелла неконсистентно. Это же влияет на последовательность выполнения команд, обрывается последовательность команд рано или обрывается последовательность поздно! #!/bin/sh -e my_function() { false echo a } Если вызвано безусловно, то обрывается рано, а если вызвано условно, то обрывается поздно. Такое "стандартное поведение" просто никто никогда не продумал как следует, я считаю. > Кстати, в "старом" sisyphus_check проверки выполнялись именно в 'if'. > Так что regression я тут не сделал. Ну как потенциальный автор новых скриптов-проверок я и спрашиваю: выполняются ли скрипты-проверки в режиме -e или нет. > >и рассчитывать на то, что my_function будет выполняться в режиме -e. > думать о коде возврата нужно всегда самому иначе ты можешь получить > неожиданный результат. Думать нужно обо всём всегда и побольше. Только я наверное на шелле больше ничего нового писать не буду.