bug-bash
[Top][All Lists]
Advanced

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

Re: typeset -p on an empty integer variable is an error. (plus -v test w


From: Dan Douglas
Subject: Re: typeset -p on an empty integer variable is an error. (plus -v test w/ array elements)
Date: Fri, 11 Jan 2013 15:34:47 -0600
User-agent: KMail/4.8.3 (Linux/3.4.6-pf+; KDE/4.8.3; x86_64; ; )

On Friday, January 11, 2013 09:48:32 PM John Kearney wrote:
> Am 11.01.2013 19:27, schrieb Dan Douglas:
> > Bash treats the variable as essentially undefined until given at least an 
> > empty value.
> >
> >     $ bash -c 'typeset -i x; [[ -v x ]]; echo "$?, ${x+foo}"; typeset -p x'
> >     1,
> >     bash: line 0: typeset: x: not found
> >     $ ksh -c 'typeset -i x; [[ -v x ]]; echo "$?, ${x+foo}"; typeset -p x'
> >     0,
> >     typeset -i x
> >
> > Zsh implicitly gives integers a zero value if none are specified and the
> > variable was previously undefined. Either the ksh or zsh ways are fine IMO.
> >
> > Also I'll throw this in:
> >
> >     $ arr[1]=test; [[ -v arr[1] ]]; echo $?
> >     1
> >
> > This now works in ksh to test if an individual element is set, though it 
> > hasn't always. Maybe Bash should do the same? -v is tricky because it adds 
> > some extra nuances to what it means for something to be defined...
> >
> 
> Personally I like the current behavior, disclaimer I use nounset.
> I see no problem with getting people to initialize variables.

How is this relevant? It's an inconsistency in the way set/unset variables
are normally handled. You don't use variadic functions? Unset variables /
parameters are a normal part of most scripts.

> it is a more robust programming approach.

I strongly disagree. (Same goes for errexit.)

-- 
Dan Douglas



reply via email to

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