Found to be not a bug: $ i=42; : ${var#${q[i=777]}}; echo $i; var=meow; : ${var#${q[i=777]}}; echo $i
must return 777 twice, because the pattern must always be expanded before looking at $var. $ i=42; : ${var+${q[i=777]}}; echo $i; var=meow; : ${var+${q[i=777]}}; echo $i already behaves correctly (42 then 777). ** Changed in: mksh Status: Triaged => Invalid -- 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/1798397 Title: too eager expansion in substitution Status in mksh: Invalid Bug description: “If word is not needed, it shall not be expanded.” (POSIX) 00:52 < izabera> i=42; : ${var#${q[i=777]}}; echo $i; var=meow; : ${var#${q[i=777]}}; echo $i 00:52 < izabera> prints 42 777 in bash and ksh93 00:52 < izabera> and 777 777 in mkmsh The #/##/%/%% of course need to expand word first. Thanks to jilles for the heads-up. To manage notifications about this bug go to: https://bugs.launchpad.net/mksh/+bug/1798397/+subscriptions