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


Groups > gnu.bash.bug > #15981

builtin echo vs /bin/echo appears to affect variable scope

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


Thread

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