On 27.12.19 17:02, Thorsten Glaser wrote:
> Erm… that’s right, += is string concatenation.

ok, I got it that this seems to be the idea here, but

1.
what about

    typeset -i x=0; x+=1; echo $x # → 1 (as in ksh/bash/zsh)

if += categorically does string concat no matter what, should this not
yield "01"?

2.
the trio ksh93/bash/zsh all adjust the meaning of +=  to denoting integer 
addition/increment if the 
variable is declared integer. do you consider this "evil" and intentionally do 
not do it? it bit me
when porting a somewhat elaborate script from ksh93 to mksh: suddenly 1+=1 
yielded 11 rather than 2.

I'm not sure what the "mission statement" of mksh is (if any) but I see that 
you come closer to
ksh93 than bash in some regards (e.g. `set -A' and '${... ;}' command 
substitution are provided)
and presume it is intended to emulate ksh93 where the latter is not manifestly 
broken? meaning:
should mksh not follow the other shells (notably ksh) in how they handle += for 
integer variables?

> 
> Write “let” before the line to make it integer addition.

understood. thanks for pointing this out. I never so far hat any use for
`let' ;)

-- 
You received this bug notification because you are a member of mksh
Mailing List, which is subscribed to mksh.
Matching subscriptions: mkshlist-to-mksh-bugmail
https://bugs.launchpad.net/bugs/1857702

Title:
  " +=" operator does string concatenation for integer variables

Status in mksh:
  New

Bug description:
  consider

  typeset -i x=0; x+=1; echo $x # → 1 (as in ksh/bash/zsh)

  but

  typeset -i x=1; x+=1; echo $x # → 11 (rather than 2 as in the other
  shells)

  I believe mksh should honour the integer declaration and interpret
  `+=' accordingly. currently, it does not even consistently use string
  concatentation (since the first example does not yield `01' ...).

To manage notifications about this bug go to:
https://bugs.launchpad.net/mksh/+bug/1857702/+subscriptions

Reply via email to