[LTP] [PATCH ltp] kernel/fs/doio/rwtest: fix shellcheck error

Zhang, Yixin yixin.zhang@intel.com
Fri Jul 6 09:14:31 CEST 2018


Hi Petr,

Sorry for late reply, I was busy on something else in the past weeks.
Thanks for all the comments, I'll provide a re-write version soon.

Yixin

On 2018-06-25 at 10:41:20 +0200, Petr Vorel wrote:
> Hi Yixin,
> 
> thanks for your patch, we appreciate your effort.
> There are some comments bellow. Even if you fix them, patches like this one
> doesn't help much. The script is really ugly, requires a rewrite which would:
> 
> 1) Be posix compliant. I.e.: remove all bashisms (arrays, typeset, regex
> in [[ ... ]], etc.). It's good to use checkbashism.pl script and run it in dash
> to test it:
> https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#132-shell-coding-style
> https://salsa.debian.org/debian/devscripts/raw/master/scripts/checkbashisms.pl
> 
> 2) Use LTP new shell API
> https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#23-writing-a-testcase-in-shell
> 
> Rewriting the script would be a great improvement. If you decide to do so,
> please do not hesitate to ask for help (if needed).
> 
> Kind regards,
> Petr
> 
> > testcases/kernel/fs/doio/rwtest:199:12: error: > is for string comparisons. Use -gt instead. [SC2071]
> > testcases/kernel/fs/doio/rwtest:320:10: error: Globs are ignored in [[ ]] except right of =/!=. Use a loop. [SC2203]
> > testcases/kernel/fs/doio/rwtest:347:7: error: Couldn't parse this test expression. [SC1073]
> > testcases/kernel/fs/doio/rwtest:347:25: error: Expected test to end here (don't wrap commands in []/[[]]).
> >                                                Fix any mentioned problems and try again. [SC1072]
> 
> ...
> > +++ b/testcases/kernel/fs/doio/rwtest
> > @@ -196,7 +196,7 @@ do	case $1 in
> >  	-n | -Dn )
> >  		dOpts="$dOpts $1 $2"
> >  		# force file locking with > 1 process
> > -		if [[ $2 > 1 ]]
> > +		if [[ $2 -gt 1 ]]
> Why not use posix compliant syntax? I.e. single square brackets:
> if [ $2 -gt 1 ]; then
> 
> >  		then
> >  			dOpts="$dOpts -k"
> >  		fi
> > @@ -317,7 +317,7 @@ do
> >  		typeset -i n=0
> >  		while (( n < ${#szcache[*]} ))
> >  		do
> > -			if [[ szcache[$n] = $dir ]]; then
> > +			if [[ ${szcache[n]} = $dir ]]; then
> Well, correct, but we'd like to drop arrays, as they're bashisms.
> >  				break;
> >  			fi
> >  			n=n+1
> > @@ -344,7 +344,7 @@ do
> 
> >  			# check if blks is a number, else set a default value for blks
> >  			default_sz=1000000
> > -			if [ $blks -eq $blks 2> /dev/null ]
> > +			if [ $blks -eq $blks ] 2>/dev/null
> The shellcheck warning was meant to be without square brackets:
> if $blks -eq $blks 2>/dev/null; then
> 


More information about the ltp mailing list