fixes for array subscripts and values containing 0x01 characters

This commit is contained in:
Chet Ramey
2021-09-28 15:13:02 -04:00
parent fa1e33671d
commit 70d7c6430d
8 changed files with 198 additions and 23 deletions
+32
View File
@@ -11,8 +11,16 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Issues with CTLESC characters in array subscripts and values. Bash-5.1 and
# earlier didn't quote them correctly and therefore halved the number of
# CTLESCs.
declare -a var
var=( $'\x01\x01\x01\x01' )
declare -p var
declare -A v2
v2=( $'\x01' ab$'\x01'c )
declare -p v2
pv()
{
@@ -22,6 +30,15 @@ pv()
}
pv
unset -f pv
pv()
{
local -A foo
eval foo=\( "${v2[@]@k}" \)
declare -p foo
}
pv
# these are wrong through bash-5.1; there is a fix tagged for bash-5.2
# when I uncomment that fix, these results will reflect it
@@ -52,3 +69,18 @@ pv4()
declare -p foo
}
pv4
unset -f pv3 pv4
pv3()
{
local -A foo=( $'\x01' "${v2[@]}" )
declare -p foo
}
pv3
pv4()
{
local -A foo=( [$'\x01']="${v2[@]}" )
declare -p foo
}
pv4