[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Name collision with nameref and local variable
From: |
gringo |
Subject: |
Name collision with nameref and local variable |
Date: |
Fri, 16 Oct 2020 17:23:52 +0200 |
Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: x86_64-pc-linux-gnu-gcc
Compilation CFLAGS: -O2 -march=native -pipe -Wno-parentheses
-Wno-format-security
uname output: Linux sun 5.9.0-gentoo-k8s #1 SMP PREEMPT Tue Oct 13 23:59:55
CEST 2020 x86_64 AMD FX(tm)-8350 Eight-Core Processor AuthenticAMD GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.0
Patch Level: 18
Release Status: release
Description:
This worked just fine on Bash 4.2:
foo() {
local -a args=("${!1}")
echo "[IN] ${args[@]}"
}
declare -a args=("$@")
echo "Bash ${BASH_VERSION}"
echo "[OUT] ${args[@]}"
foo args[@]
eg.
$ ./test.sh 1 2 3
Bash 4.2.46(2)-release
[OUT] 1 2 3
[IN] 1 2 3
whereas on Bash 5.0 we get:
$ ./test.sh 1 2 3
Bash 5.0.18(1)-release
[OUT] 1 2 3
[IN]
Renaming local variable args (in foo) to something else also gives expected
results.
- Name collision with nameref and local variable,
gringo <=