Path: csiph.com!goblin2!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail From: Chet Ramey Newsgroups: gnu.bash.bug Subject: Re: Undocumented for-loop construct Date: Fri, 7 Aug 2020 09:29:33 -0400 Organization: ITS, Case Western Reserve University Lines: 36 Approved: bug-bash@gnu.org Message-ID: References: <54462ce1-d88e-4551-aba3-dbf7d371be8a@case.edu> 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 1596806986 19769 209.51.188.17 (7 Aug 2020 13:29:46 GMT) X-Complaints-To: action@cs.stanford.edu Cc: chet.ramey@case.edu To: Klaas Vantournhout , bug-bash@gnu.org Envelope-to: bug-bash@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=case.edu; s=smtp-primary; t=1596806979; bh=VrNb7C5NpKHtmJcWo3EvyTnoWHuIdQx5NMQmQ2SN/eo=; h=Reply-To:Cc:Subject:To:References:From:Message-ID:Date: MIME-Version:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=540zRM9IyBERYTWwL60WXq7gl9OnrBa9ke7puIsPct3sh1EWZrNxVLbbIMaMrmIcaJ /rzX0nQlQYsyUHkNR/77jaCZ+1P7lMM0vR/O7toG2q5qFVJwiRGkPSJFrSSZBgydfIt NIb5us5lzaiwqpr0lXCv2dTsFP3vKM/7Z45UX/Ixa9BDdaqjNuxf+K5XcZY0cTfvVMm foIt4GzqQ6S+33eblrxosMUaylOFFQYJ8VKfsnPNiaj8kt4bo7EqAob8GjDFvUZhZCI mhrsFuvilRgqnLATnkEf45lC/kE0zTb3XSHz8el0KMR7vfkrkmovIHL1nX4Dt8lOdgQ l6sMTXag== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=case.edu; s=smtp-primary; t=1596806976; bh=qzcYlGEVBbT9Ba51ebd/x1Lhjxcae4EmOiU1kL1XBeo=; h=Reply-To:Cc:Subject:To:References:From:Message-ID:Date: MIME-Version:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=UpJTvvHeTpE9RHzk1PCPwMkibrFRRtPf9N1QZfDa0Nyx+A3FP0sHx+7KAIA7+6dZJx ELNbgo4B6GirqZYmLBkvf6c5bCUj01CsVtE9+5Lo+J6FsXHrDjTUemb/lgeeYH2VCN2 RmFo1NIVfIxgo3upeTdgZ7Srmzpe2bWgDHp0idpGwGmMIT0cR5vexTv2o3danSKm5R4 akp2DBNCTy5K6jQbrZMmaThL7oLEm7X1geBomis5Rowqskk6HkgsQpBE0mQVgMqgiqo 5mO1AQ8/3Qu+90NPFMfnlMOuE2nZGrGrs+DZ8vCuvVQMUIDGoxZWHar8U5A3j615Ttz csQN+x3w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=case.edu; s=g-case; h=reply-to:cc:subject:to:references:from:autocrypt:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=qzcYlGEVBbT9Ba51ebd/x1Lhjxcae4EmOiU1kL1XBeo=; b=ArN0t4jT8ZtKr5TGah27EV5i9q8aV1NEXbUSyH6MH/Q641BoeAGL7CoCa0ZEw5wpJw CD1dJ6OtNEj86ByZ5uXfwzF5053ZegdjtQt4i/2zw0hVHuxAxv+JeGY0iW7HkTsjF2cu gTpZGnLP/ij3SiVRmVrY37e7Nw/fi6cTXN37CFYHgC/BrS2v+0XyYaZn/FeqeJwNv2t8 u4Er3GQdM7B+I4fR46qQFHQJhiEWj433Hpufjh1AxYSZNBqzBSRne+W1urAJj/yn9Tfe lm9D5fCM1gSkvi/xxXacVdvWa9cDNwTEpO9ddcBfkjI81jkE+2s4HhMLNquYjoI1ipXa qwGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:cc:subject:to:references:from:autocrypt :organization:message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=qzcYlGEVBbT9Ba51ebd/x1Lhjxcae4EmOiU1kL1XBeo=; b=TST9F53turbKtOgSADMQLr2tC0YDwLKsCrcnuJsGQ8ptaF6JctNvaTtJ7I1+e6QOQY zU4Semftf6zKmZI9xQt5EeaTxNkFd4XiC1XMimtbmY1FpXwNLf3Yn9Pz5AV9zicce9zJ ku3krq6+LNn9Ox+vZMNZSLYzTC5/0HLcri6TFbyx1Z2JEUtOUF0WGCD8mMOQ2Icz5gIf ybO3ytjMAYmElY5hErTVmEqy71Q0AnaFImUi8TT/nK6Wq/r7LBmRWds6RGU3nO2iP6Sz 6gFi5tgR/P2PIfaaDLahDNDXpsy8DL7YXGKE1ZKGnrb+riJJci1CmEI8uCsYTiz8HfKf kuJA== X-Gm-Message-State: AOAM531qxSHgvF0Wz+SfPwPlIqoc2I3ZMpcBXhi5xMsR9XZ/ldUR1VhY n9QHySAoecMDZHdVHRnhuWwlMqaVoSWe8ZEmsen2ywO1uz1EyTuinqv2Um6EhKRqAgCjACzI7Q7 ouUCeU6eFkKQ= X-Received: by 2002:ad4:442d:: with SMTP id e13mr14957782qvt.81.1596806975937; Fri, 07 Aug 2020 06:29:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzP84/0TScDjPxM6Ish3jkMtKeCB/QkuwqfhrKNILpmv7usBayZxF7qUKYFNgFgGylrdtE6dQ== X-Received: by 2002:ad4:442d:: with SMTP id e13mr14957749qvt.81.1596806975575; Fri, 07 Aug 2020 06:29:35 -0700 (PDT) Autocrypt: addr=chet.ramey@case.edu; prefer-encrypt=mutual; keydata= mQGiBEEOsGwRBACFa0A1oa71HSZLWxAx0svXzhOZNQZOzqHmSuGOG92jIpQpr8DpvgRh40Yp AwdcXb8QG1J5yGAKeevNE1zCFaA725vGSdHUyypHouV0xoWwukYO6qlyyX+2BZU+okBUqoWQ koWxiYaCSfzB2Ln7pmdys1fJhcgBKf3VjWCjd2XJTwCgoFJOwyBFJdugjfwjSoRSwDOIMf0D /iQKqlWhIO1LGpMrGX0il0/x4zj0NAcSwAk7LaPZbN4UPjn5pqGEHBlf1+xDDQCkAoZ/VqES GZragl4VqJfxBr29Ag0UDvNbUbXoxQsARdero1M8GiAIRc50hj7HXFoERwenbNDJL86GPLAQ OTGOCa4W2o29nFfFjQrsrrYHzVtyA/9oyKvTeEMJ7NA3VJdWcmn7gOu0FxEmSNhSoV1T4vP2 1Wf7f5niCCRKQLNyUy0wEApQi4tSysdz+AbgAc0b/bHYVzIf2uO2lIEZQNNt+3g2bmXgloWm W5fsm/di50Gm1l1Na63d3RZ00SeFQos6WEwLUHEB0yp6KXluXLLIZitEJLQwQ2hldCBSYW1l eSAoQ2FzZSBzdGFuZGFyZCkgPGNoZXQucmFtZXlAY2FzZS5lZHU+iF8EExECAB8FAkPi19EC GwMHCwkIBwMCAQMVAgMDFgIBAh4BAheAAAoJELtYafBk6nSrelkAn31Gsuib7GcCZHbv5L5t VKYR9LklAJ4hzUHKA49Z0QXR+qCb80osIcmPSbkBDQRBDrBvEAQAkK6TAOKBEM+EC4j6V/7o /riVZqcgU5cid2qG9TXdwNtD9a3kvA/ObZBO93sX59wc6Bnwo4VJxsOmMlpGrAjJsxNwg3QH akEtf8LXRbVpj5xStdmBdQZUhIQyalo/2/TZq5OijtddUQcL5cs70hTv/FpT3wUvr2Xr8rjF 41IFEz8AAwcD/A0CZEGlzIrT5WCBnl6xBog/8vKiUCbarByat3d1mL6DbizvKNXQRTC9E/vE dENAWCQCjr75Bu55xT8n3SXGtWdDC5xmZ/P3OBYORP8yl8H8I1FIosWOFirbIeYdZPq8SPD1 HL+EXo9zSiHVrrZRJ19ooCKKbSdXHFCY+aJG+0KZiEkEGBECAAkFAkEOsG8CGwwACgkQu1hp 8GTqdKvjcACfZlkVCDwaz/NTO9cy3t69oWpVPNwAnRwe0qk/WL/gfhH346xh5B3HFbFN User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 In-Reply-To: Content-Language: en-US X-Mirapoint-IP-Reputation: reputation=Good-1, source=Queried, refid=tid=0001.0A020301.5F2D5624.00C9, actions=tag X-Mirapoint-IP-Reputation: reputation=good-1, source=Fixed, refid=n/a, actions=tag X-Junkmail-Status: score=7/80, host=mpv4-2015.case.edu X-Junkmail-PrAS-Raw: score=7/80, refid=2.7.2:2020.8.7.123317:17:7.944, ip=, rules=__YOUTUBE_RCVD, DKIM_SIGNATURE, __X_GOOGLE_DKIM_SIGNATURE, __HAS_REPLYTO, __HAS_CC_HDR, __SUBJ_REPLY, __BOUNCE_CHALLENGE_SUBJ, __BOUNCE_NDR_SUBJ_EXEMPT, __SUBJ_ALPHA_END, __TO_MALFORMED_2, __MULTIPLE_RCPTS_TO_X2, __TO_NAME, __TO_NAME_DIFF_FROM_ACC, __HAS_REFERENCES, __REFERENCES, __HAS_FROM, FROM_EDU_TLD, __HAS_MSGID, __SANE_MSGID, DATE_TZ_NA, __USER_AGENT, __MOZILLA_USER_AGENT, __MIME_VERSION, __IN_REP_TO, __CT, __CT_TEXT_PLAIN, __CTE, __REPLYTO_SAMEAS_FROM_ADDY, __REPLYTO_SAMEAS_FROM_ACC, __FROM_DOMAIN_IN_ANY_CC1, __FROM_DOMAIN_IN_ANY_CC2, __REPLYTO_SAMEAS_FROM_DOMAIN, __DKIM_ALIGNS_1, __DKIM_ALIGNS_2, __ANY_URI, __URI_MAILTO, __HTTPS_URI, __URI_WITH_PATH, __URI_ENDS_IN_SLASH, ECARD_KNOWN_DOMAINS, __CP_URI_IN_BODY, __FRAUD_MONEY_CURRENCY_DOLLAR, __SUBJ_ALPHA_NEGATE, __MULTIPLE_URI_TEXT, __URI_IN_BODY, __URI_NOT_IMG, __MAIL_CHAIN, __FORWARDED_MSG, [TRUNCATED], so=2010-03-03 19:42:08, dmn=2016-08-03-0138 Received-SPF: pass client-ip=129.22.103.195; envelope-from=chet.ramey@case.edu; helo=mpv4-2015.case.edu X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/07 09:29:37 X-ACL-Warn: Detected OS = Linux 2.4.x-2.6.x [generic] X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: <54462ce1-d88e-4551-aba3-dbf7d371be8a@case.edu> X-Mailman-Original-References: Xref: csiph.com gnu.bash.bug:16731 On 8/6/20 5:50 PM, Klaas Vantournhout wrote: > Dear Bash-developers, > > Recently I came across a surprising undocumented bash-feature > > $ for i in 1 2 3; { echo $i; }; > > The usage of curly-braces instead of the well-documented do ... done > construct was a complete surprise to me and even lead me to open the > following question on stack overflow: > > > https://stackoverflow.com/questions/63247449/alternate-for-loop-construct > > The community is unable to find any reference to this feature, except > > * a brief slide in some youtube presentation by Stephen Bourne: > > https://www.youtube.com/watch?v=2kEJoWfobpA&t=2095 > Relevant part starts at 34:55 > > * and the actual source code of bash and the Bourne Shell V7 It's never been documented. The reason bash supports it (undocumented) is because it was an undocumented Bourne shell feature that we implemented for compatibility. At the time, 30+ years ago, there were scripts that used it. I hope those scripts have gone into the dustbin of history, but who knows how many are using this construct now. I'm going to leave it undocumented; people should not be using it anyway. -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/