remove history position change to non-incremental search; fixes to $@ in some word expansions like :+

This commit is contained in:
Chet Ramey
2022-03-25 09:52:26 -04:00
parent 5bba60397c
commit 8f68f9f0ff
22 changed files with 990 additions and 976 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
BUILD_DIR=/usr/local/build/chet/bash/bash-current
BUILD_DIR=/usr/local/build/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR
+19
View File
@@ -1,3 +1,17 @@
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# first, let's start with the basics
recho "$@"
@@ -246,6 +260,11 @@ ${THIS_SH} ./dollar-at-star8.sub
# with different values for IFS
${THIS_SH} ./dollar-at-star9.sub
# tests for expansions of "$*" and "$@" and their array equivalents when $1 == ''
# and we're using the POSIX word expansions
${THIS_SH} ./dollar-at-star10.sub
${THIS_SH} ./dollar-at-star11.sub
# tests for special expansion of "$*" and "${array[*]}" when used with other
# expansions -- bugs through bash-2.05b
${THIS_SH} ./dollar-star1.sub
+66
View File
@@ -0,0 +1,66 @@
# checks for array variables and positional parameter expansions losing quoted
# null string expansions -- problem through bash-5.1
set -- ''
myvar[0]=
a="${myvar[*]}"
recho "$*"
recho "${*}"
recho "${a}"
recho "${myvar[*]}"
recho "${a:+nonnull}"
recho "${myvar[*]:+nonnull}"
a="${myvar[@]}"
recho "$@"
recho "${@}"
recho "${a}"
recho "${myvar[@]}"
recho "${a:+nonnull}"
recho "${myvar[@]:+nonnull}"
# check to make sure literal CTLNULs are handled correctly
set -- $'\x7f'
recho "$@"
recho "${@}"
recho "${@:+nonnull}"
recho "$*"
recho "${*}"
recho "${*:+nonnull}"
shift $#
# these should echo nothing
recho "${@}"
recho "${@:+nonnull}"
unset -v a
# make sure that other null expansions result in null strings where appropriate
set -- ''
a[0]=
recho "$*"$x
recho "${*}"$x
recho "$@"$x
recho "${@}"$x
recho "${a[*]}"$x
recho "${a[@]}"$x
recho "$@"$x
recho "${@}"$x
recho "${a[*]}"
recho "${a[@]}"
+80
View File
@@ -0,0 +1,80 @@
a[0]='/'
set -- /
# these should all result in the empty (null) string
recho "${a[0]%?}"
recho "${a[*]%?}"
recho "${a[@]%?}"
recho "${*%?}"
recho "${@%?}"
recho "${a[0]#?}"
recho "${a[*]#?}"
recho "${a[@]#?}"
recho "${*#?}"
recho "${@#?}"
recho "${a[0]/\//}"
recho "${a[*]/\//}"
recho "${a[@]/\//}"
recho "${*/\//}"
recho "${@/\//}"
recho "${a[0]:1:1}"
# these next four will all echo /
# arrays are zero-based
recho "${a[*]:0:1}"
recho "${a[@]:0:1}"
# but the positional parameters start at 1
recho "${*:1:1}"
recho "${@:1:1}"
a[0]=''
set -- ''
# arrays are zero-based
recho "${a[*]:0:1}"
recho "${a[@]:0:1}"
recho "${*:1:1}"
recho "${@:1:1}"
# these should all result in the empty (null) string, or quoted as such
recho "${a[0]@Q}"
recho "${a[*]@Q}"
recho "${a[@]@Q}"
recho "${*@Q}"
recho "${@@Q}"
recho "${a[0]@L}"
recho "${a[*]@L}"
recho "${a[@]@L}"
recho "${*@L}"
recho "${@@L}"
# examples from the bug report
unset -v a
a[0]='/'
for i in "${a[@]%/}"; do recho "$i"; done
a[0]=''
for i in "${a[@]}"; do recho "$i"; done
a[0]='/'
a[1]="//"
for i in "${a[@]%/}"; do recho "$i"; done
unset -v x y
x=('/')
y=("${x[@]%/}")
echo "${#x[@]}:${#y[@]}"
+67
View File
@@ -399,6 +399,73 @@ argv[1] = <^?>
argv[1] = <^?>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <^?>
argv[1] = <^?>
argv[1] = <nonnull>
argv[1] = <^?>
argv[1] = <^?>
argv[1] = <nonnull>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = </>
argv[1] = </>
argv[1] = </>
argv[1] = </>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <''>
argv[1] = <''>
argv[1] = <''>
argv[1] = <''>
argv[1] = <''>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = </>
1:1
xa|xb|xc
xa|xb|xc
a|b|c