Re: [LTP] [PATCH] Fix some bashisms

Garrett Cooper
2009-07-06T21:33:06Z

Jiri,
This patch looks ok for the most part, but here are some comments:

1. if [[ -z "$vnet0" -z "$vnet1" ]] => if [ -z "$vnet0" ] || [ -z "$vnet1" ]

It's better read as the following, IMO:

[ -z "$vnet0" -o -z "$vnet1" ]

2. All numeric test(1) comparisons could and should be switched from:

command
if [ $? = 0 ]; then

to:

if command; then

for brevity.

3. About &>

Redirecting Standard Output and Standard Error
Bash allows both the standard output (file descriptor 1) and
the standard error output (file descriptor 2) to be redirected to the
file whose name is the expansion of word with this construct.

There are two formats for redirecting standard output and standard error:

&>word
and
>&word

The output redirection above captures all output (and most of the time
you're capturing stdout, but losing stderr to the operating console,
which can be undesirable). >& is more portable IIRC (it works with
many ash variants, like FreeBSD's sh -- for sure -- and Solaris's sh
-- IIRC), which makes it more ideal than &>.

Thanks,
-Garrett