From owner-freebsd-standards@FreeBSD.ORG Sun Jun 22 23:40:11 2003 Return-Path: Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 40B0A37B401 for ; Sun, 22 Jun 2003 23:40:11 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id D41AC43F75 for ; Sun, 22 Jun 2003 23:40:10 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.9/8.12.9) with ESMTP id h5N6eAUp035320 for ; Sun, 22 Jun 2003 23:40:10 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.9/8.12.9/Submit) id h5N6eAt4035319; Sun, 22 Jun 2003 23:40:10 -0700 (PDT) Date: Sun, 22 Jun 2003 23:40:10 -0700 (PDT) Message-Id: <200306230640.h5N6eAt4035319@freefall.freebsd.org> To: freebsd-standards@FreeBSD.org From: des@des.no (Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?=) Subject: Re: standards/52972: /bin/sh arithmetic not POSIX compliant X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?= List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jun 2003 06:40:11 -0000 The following reply was made to PR standards/52972; it has been noted by GNATS. From: des@des.no (Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?=) To: Wartan Hachaturow Cc: freebsd-standards@FreeBSD.org, freebsd-gnats-submit@freebsd.org Subject: Re: standards/52972: /bin/sh arithmetic not POSIX compliant Date: Mon, 23 Jun 2003 08:32:55 +0200 Wartan Hachaturow writes: > The following reply was made to PR standards/52972; it has been noted by = GNATS. > On Sun, Jun 22, 2003 at 10:43:27PM +0200, Jens Schweikhardt wrote: > > The recursive processing requires that $(($a+1)) needs to undergo > > parameter expansion within $(()). >=20=20 > Right, but this construction works in /bin/sh: >=20=20 > wart@mojo:~$ /bin/sh > $ a=3D1 > $ echo $(($a+1)) > 2 Yes. It expands to $((1+1)) which evaluates to 2. > You've said the problem was with the variable without leading $, like > this: > $ a=3D1 > $ echo $((a+1))=20 > arith: syntax error: "a+1" This *should* work, but doesn't. > And, as far as my English allows me to judge, the quoted part of SUS > says that "a" in this construct should be left in output as is (since it > doesn't have leading $, ${, $(, etc.), shouldn't it? Yes, it should be left as-is so the part of the code that evaluates arithmetic expressions knows what variable is involved. For instance, "$(($a+=3D1)) would expand to "$((1+=3D1))" before evaluation, which makes no sense, while "$((a+=3D1))" clearly says to increase a with 1. DES --=20 Dag-Erling Sm=F8rgrav - des@des.no