Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #16623

Re: No word splitting for assignment-like expressions in compound assignment

Path csiph.com!xmission!news.snarked.org!news.linkpendium.com!news.linkpendium.com!panix!usenet.stanford.edu!not-for-mail
From Oğuz <oguzismailuysal@gmail.com>
Newsgroups gnu.bash.bug
Subject Re: No word splitting for assignment-like expressions in compound assignment
Date Mon, 27 Jul 2020 11:05:31 +0300
Lines 65
Approved bug-bash@gnu.org
Message-ID <mailman.132.1595837136.2739.bug-bash@gnu.org> (permalink)
References <87o8o1zfpn.fsf@hobgoblin.ariadne.com> <F420E583-E5D4-48BB-98E3-044C700BA07A@larryv.me> <e64878396a22641351ff3b910fdc99d8@ispras.ru> <CAH7i3LpA=oZt8E8ecAH8eCO+92oYxHXhymB6HaNDbyVeB+R3Fg@mail.gmail.com>
NNTP-Posting-Host lists.gnu.org
Mime-Version 1.0
Content-Type text/plain; charset="UTF-8"
Content-Transfer-Encoding quoted-printable
X-Trace usenet.stanford.edu 1595837137 7089 209.51.188.17 (27 Jul 2020 08:05:37 GMT)
X-Complaints-To action@cs.stanford.edu
Cc Lawrence Velázquez <vq@larryv.me>, "Dale R. Worley" <worley@alum.mit.edu>, "bug-bash@gnu.org" <bug-bash@gnu.org>
To Alexey Izbyshev <izbyshev@ispras.ru>
Envelope-to bug-bash@gnu.org
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=h6k6Ma0Qu0ESy9BjjxQ+Mi5IdfGRpTmnAQmCrKhEkZI=; b=LEAOXX2qLdzrZyE1ENECt81hysmp+xSg49zGOaj7utKF4C+vWLn5XzVJ7nBNoBSudU FK+F/zPngJnadVB00UAjYHdzyNJDRWN+3ewoDTCUTjsq6/T6SCZ4m7O0DBmqCmYVv1Zp udOmq0mjQlEplPWiBVD4B1ZWPn3c91zlWOQ1w4Dsv3M4Drf1OgSezbmzJVy2K90X/zj2 4AGotn9YsZNoA7XmiQ1745qEJAg8Z9Qy9WIKXu3AUoTihVEdrVZkYl63f/FfRj9eWo0j qOGiKUAeoZPrVifFyamGtwUMJ7kKMpgj1RDuUBt28JNJrV4eocgfjupmm0oQcU9zJJ9s LJDA==
X-Google-DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=h6k6Ma0Qu0ESy9BjjxQ+Mi5IdfGRpTmnAQmCrKhEkZI=; b=gIoSncWDVX5hqOjitawNCYuQA9IfPI+KaDHUduCkN92kQAlE3x6G1zK30VMWulxn48 6kBqXlxAz407Q/0XiFsc5xV41UGjmDwBb84Lu5d7bmUjcYjHmnYZhS/5ho0a+sGUzgYM JqpK55CDIFrhSGmFOyb5h0qBb+maLvwS2ggJkQXnojS1kOjykl3b5w39RxsktidOlEM7 Hy/u5306OwlWySh62giM/A01cLT+YCxsjmSXsgGIMzx4ZhAeNxRLB0UeLjwPoiah6ifs qF6hdAMO5lzgqxoj6HHEpZ5H3hlcLk7nfJWik4nNrBNUzPcklLMu4mtKopCVcbyJ85m9 UmVA==
X-Gm-Message-State AOAM533NgUYdS2Mjx0AfNPH9qk9Gr9ISzLds+8mN6ora8qCkf6zWxY9/ UR0BDkjKpkuZIMdqNJDDAGzUR93Y4MeyXqS6YH8=
X-Google-Smtp-Source ABdhPJzDGBIvbwhXDB1zvNBEoZBIl1dH6VyxOjN2FV1TMez9LbJ6hJNRGZzO1K0NtJfjuJMZVFNzu4Wq9VLWClnAKwY=
X-Received by 2002:ac8:7591:: with SMTP id s17mr5672683qtq.160.1595837132525; Mon, 27 Jul 2020 01:05:32 -0700 (PDT)
In-Reply-To <e64878396a22641351ff3b910fdc99d8@ispras.ru>
Received-SPF pass client-ip=2607:f8b0:4864:20::829; envelope-from=oguzismailuysal@gmail.com; helo=mail-qt1-x829.google.com
X-detected-operating-system by eggs.gnu.org: No matching host in p0f cache. That's all we know.
X-Spam_score_int -20
X-Spam_score -2.1
X-Spam_bar --
X-Spam_report (-2.1 / 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action no action
X-Content-Filtered-By Mailman/MimeDel 2.1.23
X-BeenThere bug-bash@gnu.org
X-Mailman-Version 2.1.23
Precedence list
List-Id Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org>
List-Unsubscribe <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe>
List-Archive <https://lists.gnu.org/archive/html/bug-bash>
List-Post <mailto:bug-bash@gnu.org>
List-Help <mailto:bug-bash-request@gnu.org?subject=help>
List-Subscribe <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe>
X-Mailman-Original-Message-ID <CAH7i3LpA=oZt8E8ecAH8eCO+92oYxHXhymB6HaNDbyVeB+R3Fg@mail.gmail.com>
X-Mailman-Original-References <87o8o1zfpn.fsf@hobgoblin.ariadne.com> <F420E583-E5D4-48BB-98E3-044C700BA07A@larryv.me> <e64878396a22641351ff3b910fdc99d8@ispras.ru>
Xref csiph.com gnu.bash.bug:16623

Show key headers only | View raw


27 Temmuz 2020 Pazartesi tarihinde Alexey Izbyshev <izbyshev@ispras.ru>
yazdı:

> On 2020-07-27 10:06, Lawrence Velázquez wrote:
>
>> On Jul 27, 2020, at 1:31 AM, Dale R. Worley <worley@alum.mit.edu> wrote:
>>> Interesting.  The documentation for 4.2.53(1) says this about parameter
>>> assignments generally, with no special rules for compound assignments:
>>>
>>>       All
>>>       values undergo tilde expansion, parameter and variable expansion,
>>> com-
>>>       mand  substitution, arithmetic expansion, and quote removal (see
>>> EXPAN-
>>>       SION below).  ...  Word  splitting  is  not
>>>       performed,  with the exception of "$@" as explained below under
>>> Special
>>>       Parameters.  Pathname expansion is not  performed.
>>>
>>> So it seems like the word splitting in "A=(X$Z)" is incorrect.  So is
>>> pathname expansion in that context.
>>>
>>
>>
>> If word splitting were not performed in compound assignments, this...
>>
>>     foo=(a b c)
>>
>> ...would not work. If pathname expansion were not performed in compound
>> assignments, this...
>>
>>     foo=(*)
>>
>> ...would not work. Arrays would become significantly less usable if
>> word splitting and pathname expansion were not allowed in compound
>> assignments.
>>
>> To be clear, I don't consider word splitting and expansions in compound
> assignments to be a problem: this is well-known and long-standing behavior,
> even though it doesn't seem to be explicitly documented. In particular, I
> expect word splitting to happen in "A=(X$Z)" case. But I expect it to
> happen in "A=(X=$Z)" too, and the lack of it seems unintentional to me.


I agree, anything that forms a valid assignment statement in isolation is
exempt from word splitting and that indeed seems like a bug or very poor
implementation choice.

    $ Z='a b'
    $ A=(X=$Z X[123]=$Z X[qwerty]=$Z X+=$Z)
    $ declare -p A
    declare -a A=([0]="X=a b" [1]="X[123]=a b" [2]="X[qwerty]=a b"
[3]="X+=a b")


>
> Alexey
>
>

-- 
Oğuz

Back to gnu.bash.bug | Previous | Next | Find similar


Thread

Re: No word splitting for assignment-like expressions in compound assignment Oğuz <oguzismailuysal@gmail.com> - 2020-07-27 11:05 +0300

csiph-web