mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-07-05 03:10:50 +02:00
remove history position change to non-incremental search; fixes to $@ in some word expansions like :+
This commit is contained in:
+1
-1
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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[@]}"
|
||||
|
||||
@@ -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[@]}"
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user