[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bash style of if-then-else?
From: |
Eric Blake |
Subject: |
Re: Bash style of if-then-else? |
Date: |
Mon, 23 Aug 2010 15:40:26 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100806 Fedora/3.1.2-1.fc13 Mnenhy/0.8.3 Thunderbird/3.1.2 |
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
There is nothing wrong with the other style; however, in the style where
'then' is on a separate line, the newline alone serves as a line
terminator and you don't need the ';', as in:
if [ -f "$file" ]
then
do something
fi
[On a related note, if you are talking in the context of
autoconf-related scripts, the preference is to use 'test -f "$file"'
rather than '[ -f "$file" ]', so as not to mix up [] with autoconf's use
of m4 quotation characters.]
--
Eric Blake eblake@redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org