47 lines
699 B
Plaintext
47 lines
699 B
Plaintext
# This isn't perfect behavior, but it establishes a baseline and will provide
|
|
# a way to detect behavior changes
|
|
|
|
echo a1
|
|
a[0]= a[1]=; recho "${a[@]:-y}"
|
|
unset a
|
|
|
|
echo a2
|
|
a[1]=; recho "${a[@]:-y}"
|
|
a[1]=; recho "${a[*]:-z}"
|
|
unset a
|
|
|
|
echo a3
|
|
a[0]= a[1]=x; recho "${a[@]:-y}"
|
|
unset a
|
|
|
|
echo a4
|
|
a[0]= a[1]=x; recho ${a[@]:+y}
|
|
unset a
|
|
|
|
echo p1
|
|
set '' ''
|
|
recho "${@:-y}"
|
|
|
|
shift $#
|
|
|
|
echo p2
|
|
set '' x
|
|
recho "${@:-y}"
|
|
|
|
shift $#
|
|
|
|
echo p3
|
|
set '' x
|
|
recho ${@:+y}
|
|
|
|
# problems with * and null expansions dating back to bash's earliest days
|
|
A=(''); set -- ''
|
|
|
|
echo "<${A[*]:-X}>" "<${*:-X}>" "<${A:-X}>" "<${A[0]:-X}>"
|
|
|
|
IFS=
|
|
A=('' ''); set -- '' ''
|
|
B=''
|
|
|
|
echo "<${A[*]:-X}>" "<${*:-X}>" "<${B:-X}>" "<${B[*]:-X}>"
|