On 2005-08-01 13:55, John Baldwin <[EMAIL PROTECTED]> wrote:
>On Monday 01 August 2005 01:29 pm, [EMAIL PROTECTED] wrote:
>> This patch effects most of the rc.d scripts that utilize simple IF
>> statements, converting them to logical AND/OR's instead. For example:
>>
>> if [ ! -f foo ]
>> then
>>     bar
>> fi
>>
>> Would simply become:
>>
>> [ -f foo ] || bar
>>
>> The exception (but not the rule) is for any situation where ELIF/ELSE is
>> required. In other words any exclusive conditional situations.
>>
>> I also applied this notion to many simple blocks of code wrapped around
>> non-exclusive IF statements, such as:
>>
>> [ -f foo ] && {
>>    command-list
>>    [...]
>> }
>
> The argument I would have against this is that it is a lot easier to
> read the 'if foo; then ; fi' style, esp. for folks used to using C,
> etc.  Shell scripts don't need to be overly obfuscated.

Ditto.  The if/then blocks may look superficial at first and entirely
redundant, but they really work much better then code like this:

        [ -f foo ] || bar

has to be extended to form a multiline statement.  Now, I know that one
can always write:

        [ -f foo ] || {
                [ -d bar ] && {
                        blah
                }
        }

But this quickly gets too ugly for my taste.  The equivalent if/then
blocks:

        if [ ! -f foo ]; then
                if [ -d bar ]; then
                        blah
                fi
        fi

or even, the similar:

        if [ ! -f foo ] && [ -d bar ]; then
                blah
        fi

Look much much prettier to the eyes of one who knows how to read both
shell scripts and C code.

- Giorgos

_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to