Path: csiph.com!xmission!news.glorb.com!usenet.stanford.edu!not-for-mail From: Chet Ramey Newsgroups: gnu.bash.bug Subject: Re: Inconsistent arithmetic evaluation of parameters Date: Thu, 3 Sep 2015 09:04:44 -0400 Lines: 37 Approved: bug-bash@gnu.org Message-ID: References: <20150901175030.GP4309@eeg.ccf.org> <20150901202308.GR4309@eeg.ccf.org> <87r3mhu91x.fsf@igel.home> <20150902151948.GT4309@eeg.ccf.org> <55E714BA.9020904@case.edu> <20150902154840.GU4309@eeg.ccf.org> Reply-To: chet.ramey@case.edu NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Trace: usenet.stanford.edu 1441285529 14470 208.118.235.17 (3 Sep 2015 13:05:29 GMT) X-Complaints-To: action@cs.stanford.edu Cc: chet.ramey@case.edu To: Greg Wooledge , "bug-bash@gnu.org" Envelope-to: bug-bash@gnu.org X-Enigmail-Draft-Status: N1110 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 In-Reply-To: <20150902154840.GU4309@eeg.ccf.org> X-Junkmail-Status: score=10/60, host=mpv6.cwru.edu X-Junkmail-Whitelist: YES (by domain whitelist at mpv1.tis.cwru.edu) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 129.22.105.36 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com gnu.bash.bug:11475 On 9/2/15 11:48 AM, Greg Wooledge wrote: > On Wed, Sep 02, 2015 at 11:24:42AM -0400, Chet Ramey wrote: >> On 9/2/15 11:19 AM, Greg Wooledge wrote: >>> On Wed, Sep 02, 2015 at 10:16:14AM -0500, Dennis Williamson wrote: >>>> The $ is implied. >>> >>> That is completely absurd. (And wrong.) >> >> Not exactly. When the arithmetic evaluator encounters a token that is of >> the form of a shell identifier (`bar'), in a context where an operand is >> needed, it treats it as a shell variable and looks up the variable's >> value. In that sense, it's an expansion. >> >> The difference between bash and dash is what each shell does with that >> value. > > $foo and foo are not equivalent in dash, as we've already discussed: > > $ dash > $ foo=bar bar=5 > $ echo $((foo)) > dash: 4: Illegal number: bar > $ echo $(($foo)) > 5 Yes. I explained exactly why that is and what's happening. You can take that explanation and understand why Dennis uses the term `indirection' to mean the subsequent expansion by the arithmetic evaluator, and why it appears as if there is an implied `$' in the specific case we're discussing. It's not a general property, just observed behavior in arithmetic evaluation. -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU chet@case.edu http://cnswww.cns.cwru.edu/~chet/