Bug 1459253 - Bash consume exit code when keword "local" is used.
Bash consume exit code when keword "local" is used.
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: bash (Show other bugs)
Unspecified Unspecified
unspecified Severity medium
: rc
: ---
Assigned To: Siteshwar Vashisht
BaseOS QE - Apps
Depends On:
  Show dependency treegraph
Reported: 2017-06-06 12:01 EDT by Jakub Prokeš
Modified: 2017-06-12 22:36 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2017-06-12 22:36:33 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
Reproducer (267 bytes, application/x-shellscript)
2017-06-06 12:01 EDT, Jakub Prokeš
no flags Details

  None (edit)
Description Jakub Prokeš 2017-06-06 12:01:34 EDT
Created attachment 1285465 [details]

Description of problem:

x=$(echo 33; exit 33)
returns exit code 33, but
local x=$(echo 33; exit 33)
returns 0

Version-Release number of selected component (if applicable):

How reproducible:
reproducer attached

Actual results:
GNU bash, version 4.3.43(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
f1: 0
f2: 33

Expected results:
f1 and f2 produce same output

Additional info:
Comment 1 Siteshwar Vashisht 2017-06-09 07:52:05 EDT
Do you wish to report this bug for RHEL 5 or Fedora ? I see that you are running Fedora packages on your system. Also, is there something missing from your reproducer steps ? local keyword can be used only within functions. Please provide a full reproducer.
Comment 2 Kamil Dudka 2017-06-09 17:25:17 EDT
(In reply to Jakub Prokeš from comment #0)
> local x=$(echo 33; exit 33)

This is a known programming mistake in your code, not a bug in the interpreter:


Note You need to log in before you can comment on or make changes to this bug.