Date: Mon, 1 Aug 2005 21:02:54 +0300 From: Giorgos Keramidas <keramida@linux.gr> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-hackers@freebsd.org Subject: Re: [patch] rc.d cleanup Message-ID: <20050801180254.GB1176@beatrix.daedalusnetworks.priv> In-Reply-To: <200508011355.19274.jhb@FreeBSD.org> References: <64511.68.95.232.238.1122917387.squirrel@68.95.232.238> <200508011355.19274.jhb@FreeBSD.org>
index | next in thread | previous in thread | raw e-mail
On 2005-08-01 13:55, John Baldwin <jhb@freebsd.org> wrote:
>On Monday 01 August 2005 01:29 pm, diz@linuxpowered.com 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
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050801180254.GB1176>
