Path: csiph.com!goblin2!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail From: Greg Wooledge Newsgroups: gnu.bash.bug Subject: Re: expression evaluation problem Date: Wed, 24 Jul 2019 14:49:43 -0400 Lines: 28 Approved: bug-bash@gnu.org Message-ID: References: <5D3889D2.3090101@tlinx.org> <20190724175103.GN1218@eeg.ccf.org> <5D38A6BF.9020309@tlinx.org> <20190724184943.GO1218@eeg.ccf.org> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: usenet.stanford.edu 1563994203 8657 209.51.188.17 (24 Jul 2019 18:50:03 GMT) X-Complaints-To: action@cs.stanford.edu Cc: bug-bash To: L A Walsh Envelope-to: bug-bash@gnu.org Mail-Followup-To: L A Walsh , bug-bash Content-Disposition: inline In-Reply-To: <5D38A6BF.9020309@tlinx.org> User-Agent: Mutt/1.10.1 (2018-07-13) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 139.137.100.1 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <20190724184943.GO1218@eeg.ccf.org> X-Mailman-Original-References: <5D3889D2.3090101@tlinx.org> <20190724175103.GN1218@eeg.ccf.org> <5D38A6BF.9020309@tlinx.org> Xref: csiph.com gnu.bash.bug:15239 On Wed, Jul 24, 2019 at 11:43:11AM -0700, L A Walsh wrote: > Those aren't my variables. > If you assign the integer attribute to a variable it isn't the same > as when you don't. In this case it *is*, because everything is being fed to an arithmetic command anyway. Simplifying the bug report as much as possible lets us avoid confusing and unnecessary diversions. > > The ${str:2*c:2} part is performed first, while c is still 0, and it > > expands to "cf". > > > --- > Why? It isn't even necessary when 'c' is greater than 'uxtra' Because that's how bash works. $((expression)) The expression is treated as if it were within double quotes, but a double quote inside the parentheses is not treated specially. All to‐ kens in the expression undergo parameter and variable expansion, com‐ mand substitution, and quote removal. The result is treated as the arithmetic expression to be evaluated. Arithmetic expansions may be nested.