[LTP] [PATCH 1/1] tst_net.sh: Declare prefix variable as empty

Petr Vorel pvorel@suse.cz
Mon Jul 12 08:40:38 CEST 2021


Hi Joerg,

> Hi,

> On 7/12/2021 7:49 AM, Petr Vorel wrote:
> > Thanks for a review!
> > It's a bit strange to add '=' only single variable, maybe I should have rename
> > the variable.

> > Paranoid approach would be to add '=' to any variable which is assigned only on
> > some circumstance or even any variable which is not assigned to any value.
> > But we probably don't want to do it.
> I think good common practice would be to add it to all variables, where it
> matters.
> There are probably only very few places, where a local variable is not
> assigned before being accessed.
> Maybe there is some kind of shell code linter, that can find uninitialized
> variables?
> A good linter could also find variables, that should be local, but are not.
> But I have never looked into shell code linting.

Thanks for your input.

I'm aware only of shellcheck [1], which I'm not a big fan of (false positives,
useless hints). And yes, in this case it warns about 'local' not being POSIX
=> useless :(.

In testcases/lib/tst_net.sh line 411:
	local counter host_id host_range is_counter max_host_id min_host_id net_id prefix tmp type
        ^-- SC3043: In POSIX sh, 'local' is undefined.


> In fs_bind_lib.sh, OPTIND in fs_bind_check probably also requires setting to
> empty, or better 0.
We use tst_test.sh in OPTIND=1 ("The index of the next argument to be processed
by the getopts builtin command")

> But maybe dash's implementation of getopts does not require it. I only had
> to add local OPTIND for busybox sh iirc...
I used to set local OPTIND (in tst_net.sh), which is obviously not working on
dash.

> Yet another case of: Shellcode is unpredictable :)
Yep, I love shell (understand why everything is slowly rewritten into C).

Kind regards,
Petr

> Joerg

[1] https://github.com/koalaman/shellcheck


More information about the ltp mailing list