Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #15981
| Path | csiph.com!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail |
|---|---|
| From | Keith Thompson <Keith.S.Thompson@gmail.com> |
| Newsgroups | gnu.bash.bug |
| Subject | builtin echo vs /bin/echo appears to affect variable scope |
| Date | Mon, 2 Mar 2020 11:54:24 -0800 |
| Lines | 81 |
| Approved | bug-bash@gnu.org |
| Message-ID | <mailman.1922.1583178882.2412.bug-bash@gnu.org> (permalink) |
| References | <CAAHpriP0ZosuQ7=5_F294UxzLb5ynbECCeqFoQK8Ex_GDkFGgw@mail.gmail.com> |
| NNTP-Posting-Host | lists.gnu.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="UTF-8" |
| X-Trace | usenet.stanford.edu 1583178883 9005 209.51.188.17 (2 Mar 2020 19:54:43 GMT) |
| X-Complaints-To | action@cs.stanford.edu |
| Cc | Keith Thompson <Keith.S.Thompson@gmail.com> |
| To | bug-bash@gnu.org |
| Envelope-to | bug-bash@gnu.org |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=haWOJN2kFzt1Icv2YpKj0YeRidYEY6OWJYH9tJTepPs=; b=bOkkdXqMF6rAwfuKttZTNvTTKc9ePRHvNvSjD/WZrc0OG8tUDo+X5UjjxyufKL77xv dQQsGGsL+ltTrcg1z38D1I8dCUFKGx/AYlwQmRjO8p0SuTIqikb8BOCiJfqG4o/NhKj/ hCwqbFEyjCozvhl3dbzue71Ctngv8OPz29cNY3iYdg6OBPbhAOWsFLeAImukOain9y9S gZBjQGvmByxDYZQwTzRgSKzAwdPa94bWh2/0IpIJ9VDAbMrG+H4v/VxqgpA0i2FFW5PW YaeoS9QwGUDkukpnfFPHLIuKebEYVG2mggeNsZ1no2nWFkkmPSlcHedCtZKQeyn009X2 Mhhw== |
| X-Google-DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=haWOJN2kFzt1Icv2YpKj0YeRidYEY6OWJYH9tJTepPs=; b=ZWSbxZX6+gPg98BiId7oTFQmClVPb3oM2gJvAUcmHTbYpfmlG+sXrfvmRtk6hWverL Hd+AXVna4EdFD2tL8oYFnfatjT91ksVXsxMUTZrg0wpC3EIYyGQFybOm9XpzhdzT+6L1 vsArxaKelZL7LflXrTe2qWsSdQBYiIOdC5yXk3s1tU25Eks0tN+K42A85490LIOrmG+X c+tK0ykEuA/MocU3pHhHelq3BA4lloQaLK+RkXaVyBeC2voJ8T7oswqhklUJjVF+bHCq itqTOvozzfHXFgxQJW9ESHO0fSdxeEpgeTnrqL2ABXhSVgdght+ettY+Jft4JZxNIXhw PlTw== |
| X-Gm-Message-State | ANhLgQ1XvGVzJ3j/SzBzkDePxiq03HYGUDJg3XOpzGathrTqiDHIN6yT 5K6GStvW9I0PKgTHJteiKsVljC+03xsZ5Ypqcr347d1UClc= |
| X-Google-Smtp-Source | ADFU+vvficHA7Nap0hZSm7M9wtHORZsILXKjyYZEvfGoYtKtde+lWADuuR87EFMTsFGl5oSq5unMBMO5FphhTsLYVzo= |
| X-Received | by 2002:a17:906:14d5:: with SMTP id y21mr922201ejc.212.1583178876807; Mon, 02 Mar 2020 11:54:36 -0800 (PST) |
| X-detected-operating-system | by eggs.gnu.org: Genre and OS details not recognized. |
| X-Received-From | 2a00:1450:4864:20::534 |
| 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 | <CAAHpriP0ZosuQ7=5_F294UxzLb5ynbECCeqFoQK8Ex_GDkFGgw@mail.gmail.com> |
| Xref | csiph.com gnu.bash.bug:15981 |
Show key headers only | View raw
From: kst
To: bug-bash@gnu.org
Subject: echo vs /bin/echo appears to affect variable scope
Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -Wno-parentheses -Wno-format-security
uname output: Linux bomb20 4.15.0-88-generic #88-Ubuntu SMP Tue Feb 11
20:11:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.0
Patch Level: 16
Release Status: release
Description:
The original test case was a small script in this answer on Stack Overflow:
https://stackoverflow.com/a/60480960/827263
I've narrowed it down to two scripts that differ only in
using "echo" vs. "/bin/echo". With the built-in "echo",
$i is correctly incremented. With the external "/bin/echo",
$i appears to be 0 on each iteration.
Moving the "((i++))" into a separate command also works around
the bug.
Repeat-By:
(/o/bin/bash is a symlink to bash 5.0.16 on my system.)
bad.bash:
```
#!/o/bin/bash
rm -f BASH_BUG_TEST*
i=0
printf '%s\n' should-be-0 should-be-1 should-be-2 | \
while read word ; do
/bin/echo hello \
> BASH_BUG_TEST_$((i++))_$word
done
ls -1 BASH_BUG_TEST*
rm -f BASH_BUG_TEST*
```
Output of bad.bash:
```
BASH_BUG_TEST_0_should-be-0
BASH_BUG_TEST_0_should-be-1
BASH_BUG_TEST_0_should-be-2
```
good.bash:
```
#!/o/bin/bash
rm -f BASH_BUG_TEST*
i=0
printf '%s\n' should-be-0 should-be-1 should-be-2 | \
while read word ; do
echo hello \
> BASH_BUG_TEST_$((i++))_$word
done
ls -1 BASH_BUG_TEST*
rm -f BASH_BUG_TEST*
```
Output of good.bash:
```
BASH_BUG_TEST_0_should-be-0
BASH_BUG_TEST_1_should-be-1
BASH_BUG_TEST_2_should-be-2
```
Back to gnu.bash.bug | Previous | Next | Find similar
builtin echo vs /bin/echo appears to affect variable scope Keith Thompson <Keith.S.Thompson@gmail.com> - 2020-03-02 11:54 -0800
csiph-web