On Thu, Sep 23, 2010 at 04:38:42PM -0500, Michael Witten wrote:
> On Mon, Aug 23, 2010 at 16:40, Eric Blake <[email protected]> wrote:
> > On 08/23/2010 03:29 PM, Peng Yu wrote:
> >>
> >> Hi,
> >>
> >> I'm wondering if there is a widely accepted coding style of bash scripts.
> >>
> >> lug.fh-swf.de/vim/vim-bash/StyleGuideShell.en.pdf
> >>
> >> I've seen the following style. Which is one is more widely accepted?
> >>
> >> if [ -f $file]; then
> >> do something
> >> fi
> >>
> >> if [ -f $file];
> >> then
> >> do something
> >> fi
> >
> > Neither. You're missing adequate quoting in case $file contains spaces.
> > More importantly, when using '[', the trailing ']' has to be its own
> > argument. Personally, I tend to use the style with fewer lines:
> >
> > if [ -f "$file" ]; then
> > do something
> > fi
>
> This is also possible:
>
> [ -f "$file" ] && do_something
>
> or perhaps:
>
> [ -f "$file" ] && {
> do_something_0
> do_something_1
> }
While we're talking about style... I prefer using 'test' rather than
'[..]' as it seems to me to be more readable.
test -f "$file" && do_something
test -f "$file" && {
do_something_0
do_something_1
}
if test -f $file; then
do something
else
do something else
fi
Are there actual advantages for [] over test? I guess the former uses
one less byte than the latter.
Ken