bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Some incorrect behaviour for BASH arrays


From: Greg Wooledge
Subject: Re: Some incorrect behaviour for BASH arrays
Date: Thu, 31 Aug 2023 12:23:57 -0400

On Thu, Aug 31, 2023 at 04:13:09PM +0100, Kerin Millar wrote:
> This script is a mess because its functions begin by defining RESULT as an 
> ordinary, non-array variable (if not yet declared).
> 
> $ RESULT='string'
> $ declare -p RESULT # not yet an array variable
> declare -- RESULT='string'
> 
> It then proceeds to operate on the variable in such a way that it will be 
> transformed to an array.
> 
> $ RESULT[1]='second element'
> $ declare -p RESULT
> declare -a RESULT=([0]="string" [1]="second element")
> 
> Now, would RESULT='' empty this array? No, it would not.
> 
> $ RESULT='' # no different from RESULT[0]=''
> $ declare -p RESULT
> declare -a RESULT=([0]="" [1]="second element")
> 
> A correct way to initialise an empty array variable is RESULT=().
> 
> $ RESULT=()
> $ declare -p RESULT # now an empty array
> declare -a RESULT=()
> 
> You might also consider using the "local" builtin to declare the variable 
> with a function-local scope.

All of this is excellent advice.  If you'd like a tutorial that explains
more about bash arrays, I recommend:

https://mywiki.wooledge.org/BashFAQ/005



reply via email to

[Prev in Thread] Current Thread [Next in Thread]