Configuration Information [Automatically generated, do not change]:
Machine: aarch64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer>
uname output: Linux aelata-vbox 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC>
Machine Type: aarch64-unknown-linux-gnu
Bash Version: 5.2
Patch Level: 21
Release Status: release
Description:
When BASH_COMPAT=3.2 is set on bash 5.2, quoting '&' in pattern substitution is
not compatible with bash 3.2.
The following line is expected wth the script below.
BASH_VERSION=5.2.21(1)-release, BASH_COMPAT=3.2, a < b
Repeat-By:
#!/bin/bash
s="a < b"
vers=(3.2 4.4 5.1 5.2)
for ver in "${vers[@]}"; do
[[ $BASH_VERSION < $ver ]] && break
BASH_COMPAT=$ver # ignored for bash version less than 5.0
t=${s//'<'/'<'}
echo "BASH_VERSION=$BASH_VERSION, BASH_COMPAT=$BASH_COMPAT, $t"
done
--
BASH_VERSION=3.2.57(1)-release, BASH_COMPAT=3.2, a < b
BASH_VERSION=4.4.18(1)-release, BASH_COMPAT=3.2, a < b
BASH_VERSION=4.4.18(1)-release, BASH_COMPAT=4.4, a < b
BASH_VERSION=5.1.16(1)-release, BASH_COMPAT=3.2, a < b
BASH_VERSION=5.1.16(1)-release, BASH_COMPAT=4.4, a < b
BASH_VERSION=5.1.16(1)-release, BASH_COMPAT=5.1, a < b
BASH_VERSION=5.2.21(1)-release, BASH_COMPAT=3.2, a <lt; b
BASH_VERSION=5.2.21(1)-release, BASH_COMPAT=4.4, a < b
BASH_VERSION=5.2.21(1)-release, BASH_COMPAT=5.1, a < b
BASH_VERSION=5.2.21(1)-release, BASH_COMPAT=5.2, a < b
—