mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-07-07 12:20:50 +02:00
commit bash-20040923 snapshot
This commit is contained in:
+1
-1
@@ -95,6 +95,6 @@ trap: usage: trap [-lp] [arg signal_spec ...]
|
||||
./errors.tests: line 246: kill: -s: option requires an argument
|
||||
./errors.tests: line 248: kill: S: invalid signal specification
|
||||
./errors.tests: line 250: kill: `': not a pid or valid job spec
|
||||
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
|
||||
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
|
||||
./errors.tests: line 255: set: trackall: invalid option name
|
||||
./errors.tests: line 262: `!!': not a valid identifier
|
||||
|
||||
+1
-1
@@ -85,7 +85,7 @@ command: usage: command [-pVv] command [arg ...]
|
||||
./errors.tests: line 213: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
|
||||
./errors.tests: line 216: trap: NOSIG: invalid signal specification
|
||||
./errors.tests: line 219: trap: -s: invalid option
|
||||
trap: usage: trap [-lp] [[arg] signal_spec ...]
|
||||
trap: usage: trap [-lp] [arg signal_spec ...]
|
||||
./errors.tests: line 225: return: can only `return' from a function or sourced script
|
||||
./errors.tests: line 229: break: 0: loop count out of range
|
||||
./errors.tests: line 233: continue: 0: loop count out of range
|
||||
|
||||
@@ -28,7 +28,7 @@ argv[3] = <d>
|
||||
argv[4] = <e>
|
||||
argv[5] = <f>
|
||||
argv[1] = </usr/homes/chet>
|
||||
argv[1] = </usr/homes/chet>
|
||||
argv[1] = <~>
|
||||
argv[1] = <~>
|
||||
argv[1] = <\~>
|
||||
argv[1] = <\ \~>
|
||||
@@ -108,7 +108,7 @@ argv[3] = <c>
|
||||
argv[4] = <d>
|
||||
argv[5] = <e>
|
||||
argv[6] = <f>
|
||||
./more-exp.tests: line 269: abc=def: command not found
|
||||
./more-exp.tests: line 272: abc=def: command not found
|
||||
argv[1] = <a b c d e>
|
||||
argv[1] = <a>
|
||||
argv[2] = <b>
|
||||
@@ -184,13 +184,13 @@ argv[1] = <1>
|
||||
argv[1] = <5>
|
||||
argv[1] = <5>
|
||||
argv[1] = <0>
|
||||
./more-exp.tests: line 420: ${#:}: bad substitution
|
||||
./more-exp.tests: line 422: ${#/}: bad substitution
|
||||
./more-exp.tests: line 424: ${#%}: bad substitution
|
||||
./more-exp.tests: line 426: ${#=}: bad substitution
|
||||
./more-exp.tests: line 428: ${#+}: bad substitution
|
||||
./more-exp.tests: line 430: ${#1xyz}: bad substitution
|
||||
./more-exp.tests: line 433: #: %: syntax error: operand expected (error token is "%")
|
||||
./more-exp.tests: line 423: ${#:}: bad substitution
|
||||
./more-exp.tests: line 425: ${#/}: bad substitution
|
||||
./more-exp.tests: line 427: ${#%}: bad substitution
|
||||
./more-exp.tests: line 429: ${#=}: bad substitution
|
||||
./more-exp.tests: line 431: ${#+}: bad substitution
|
||||
./more-exp.tests: line 433: ${#1xyz}: bad substitution
|
||||
./more-exp.tests: line 436: #: %: syntax error: operand expected (error token is "%")
|
||||
argv[1] = <0>
|
||||
argv[1] = <a+b>
|
||||
argv[1] = <+>
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
argv[1] = <aaa bbb ccc>
|
||||
argv[1] = <aaa bbb ccc>
|
||||
argv[1] = <baz:bar>
|
||||
argv[1] = <baz:bar>
|
||||
argv[1] = <aaa bbb ccc>
|
||||
argv[1] = <bar>
|
||||
argv[1] = <bar>
|
||||
argv[1] = <bar>
|
||||
argv[1] = <abcde>
|
||||
argv[1] = <abcde>
|
||||
argv[1] = <xyz>
|
||||
argv[1] = <a b>
|
||||
argv[2] = <c>
|
||||
argv[3] = <d>
|
||||
argv[4] = <e>
|
||||
argv[5] = <f>
|
||||
argv[1] = <a b>
|
||||
argv[1] = <a>
|
||||
argv[2] = <b>
|
||||
argv[1] = <a b>
|
||||
argv[2] = <c>
|
||||
argv[3] = <d>
|
||||
argv[4] = <e>
|
||||
argv[5] = <f>
|
||||
argv[1] = <a b>
|
||||
argv[2] = <c>
|
||||
argv[3] = <d>
|
||||
argv[4] = <e>
|
||||
argv[5] = <f>
|
||||
argv[1] = </usr/homes/chet>
|
||||
argv[1] = <~>
|
||||
argv[1] = <~>
|
||||
argv[1] = <\~>
|
||||
argv[1] = <\ \~>
|
||||
argv[1] = <\ \ \~>
|
||||
argv[1] = </usr/homes/chet>
|
||||
argv[1] = </usr/homes/chet>
|
||||
argv[1] = </usr/homes/chet>
|
||||
argv[1] = <$HOME>
|
||||
argv[1] = <\ $HOME>
|
||||
argv[1] = <\ \ $HOME>
|
||||
argv[1] = <'bar'>
|
||||
argv[1] = <'bar'>
|
||||
argv[1] = <*@>
|
||||
argv[1] = <*@>
|
||||
argv[1] = <*@>
|
||||
argv[1] = <*@>
|
||||
argv[1] = <*@*>
|
||||
argv[1] = <*@*>
|
||||
argv[1] = <*@*>
|
||||
argv[1] = <*@*>
|
||||
argv[1] = <abcd>
|
||||
argv[1] = <efghijkl>
|
||||
argv[1] = <4>
|
||||
argv[2] = <2>
|
||||
argv[1] = <1>
|
||||
argv[1] = <bar>
|
||||
argv[1] = <2>
|
||||
argv[1] = <bar>
|
||||
argv[1] = <2>
|
||||
argv[1] = <4>
|
||||
argv[1] = <--\>
|
||||
argv[2] = <-->
|
||||
argv[1] = <--\^J-->
|
||||
argv[1] = <--+\>
|
||||
argv[2] = <+-->
|
||||
argv[1] = <--+\^J+-->
|
||||
argv[1] = <-+\>
|
||||
argv[2] = <+-\>
|
||||
argv[3] = <->
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <>
|
||||
argv[1] = <>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <xy>
|
||||
argv[1] = <>
|
||||
argv[1] = <>
|
||||
argv[1] = <x>
|
||||
argv[1] = <x>
|
||||
argv[1] = <>
|
||||
argv[1] = <x>
|
||||
argv[1] = <x>
|
||||
argv[1] = <x>
|
||||
argv[1] = <x>
|
||||
argv[1] = <^?>
|
||||
argv[1] = <^?>
|
||||
argv[1] = <x>
|
||||
argv[1] = <x>
|
||||
argv[1] = <>
|
||||
argv[2] = <abd>
|
||||
argv[3] = <x>
|
||||
argv[1] = <>
|
||||
argv[2] = <abd>
|
||||
argv[3] = <>
|
||||
argv[1] = <a,b,c,d,e,f>
|
||||
argv[1] = <a>
|
||||
argv[2] = <b>
|
||||
argv[3] = <c>
|
||||
argv[4] = <d>
|
||||
argv[5] = <e>
|
||||
argv[6] = <f>
|
||||
./more-exp.tests: line 272: abc=def: command not found
|
||||
argv[1] = <a b c d e>
|
||||
argv[1] = <a>
|
||||
argv[2] = <b>
|
||||
argv[3] = <c>
|
||||
argv[4] = <d>
|
||||
argv[5] = <e>
|
||||
argv[1] = <foo)>
|
||||
argv[1] = <a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\\a>
|
||||
argv[1] = <a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\\a>
|
||||
argv[1] = <a>
|
||||
argv[1] = <a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <$a>
|
||||
argv[1] = <\foo>
|
||||
argv[1] = <$a>
|
||||
argv[1] = <\foo>
|
||||
argv[1] = <\$a>
|
||||
argv[1] = <\\$a>
|
||||
argv[1] = <a>
|
||||
argv[1] = <a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <\a>
|
||||
argv[1] = <G>
|
||||
argv[2] = <{>
|
||||
argv[3] = <I>
|
||||
argv[4] = <K>
|
||||
argv[5] = <}>
|
||||
argv[1] = <hi>
|
||||
argv[2] = <K>
|
||||
argv[3] = <}>
|
||||
argv[1] = <a*>
|
||||
Number of args: 0
|
||||
<${*-x}>: <x>
|
||||
<${@-x}>: <x>
|
||||
Number of args: 1
|
||||
<${*-x}>: <>
|
||||
<${@-x}>: <>
|
||||
Number of args: 2
|
||||
<${*-x}>: < >
|
||||
<${@-x}>: < >
|
||||
argv[1] = <5>
|
||||
argv[1] = <5>
|
||||
argv[1] = <5>
|
||||
argv[1] = <5>
|
||||
argv[1] = <5>
|
||||
argv[1] = <0>
|
||||
argv[1] = <0>
|
||||
argv[1] = <0>
|
||||
argv[1] = <0>
|
||||
argv[1] = <0>
|
||||
argv[1] = <0>
|
||||
argv[1] = <posparams>
|
||||
argv[1] = <posparams>
|
||||
argv[1] = <2>
|
||||
argv[1] = <0>
|
||||
argv[1] = <0>
|
||||
argv[1] = <1>
|
||||
argv[1] = <5>
|
||||
argv[1] = <5>
|
||||
argv[1] = <0>
|
||||
./more-exp.tests: line 420: ${#:}: bad substitution
|
||||
./more-exp.tests: line 422: ${#/}: bad substitution
|
||||
./more-exp.tests: line 424: ${#%}: bad substitution
|
||||
./more-exp.tests: line 426: ${#=}: bad substitution
|
||||
./more-exp.tests: line 428: ${#+}: bad substitution
|
||||
./more-exp.tests: line 430: ${#1xyz}: bad substitution
|
||||
./more-exp.tests: line 433: #: %: syntax error: operand expected (error token is "%")
|
||||
argv[1] = <0>
|
||||
argv[1] = <a+b>
|
||||
argv[1] = <+>
|
||||
argv[1] = <+>
|
||||
argv[1] = <+>
|
||||
argv[1] = <G { I >
|
||||
argv[2] = <K>
|
||||
argv[3] = <}>
|
||||
argv[1] = <hi>
|
||||
argv[2] = <K>
|
||||
argv[3] = <}>
|
||||
argv[1] = <xxx>
|
||||
argv[2] = <yyy>
|
||||
1
|
||||
argv[1] = <>
|
||||
argv[1] = <>
|
||||
argv[1] = <>
|
||||
argv[1] = <:a:>
|
||||
argv[1] = <:b:>
|
||||
argv[1] = <>
|
||||
argv[1] = <>
|
||||
@@ -65,7 +65,10 @@ HOME=/usr/homes/chet
|
||||
somevar=
|
||||
expect "<$HOME>"
|
||||
recho ${somevar:-~}
|
||||
expect "<$HOME>"
|
||||
# This changed after bash-3.0, when the tilde implementation was redone. It's
|
||||
# not backward compatible, but it's very hard to be backward-compatible here,
|
||||
# and I think the old behavior was a bug
|
||||
expect '<~>'
|
||||
recho "${somevar:-~}"
|
||||
expect '<~>'
|
||||
recho "${somevar:-"~"}"
|
||||
|
||||
@@ -0,0 +1,501 @@
|
||||
expect()
|
||||
{
|
||||
echo expect "$@"
|
||||
}
|
||||
|
||||
tool_var() {
|
||||
eval $1=\"\${$1:-$2}\"
|
||||
export $1
|
||||
}
|
||||
|
||||
A="aaa bbb ccc"
|
||||
|
||||
unset B
|
||||
|
||||
tool_var B ${B:-"$A"}
|
||||
|
||||
expect '<aaa bbb ccc>'
|
||||
recho "$A"
|
||||
expect '<aaa bbb ccc>'
|
||||
recho "$B"
|
||||
|
||||
eto_prepend() {
|
||||
eval $1=\'$2\''${'$1':+":"${'$1'}}'; export $1
|
||||
}
|
||||
|
||||
foo=bar; export foo
|
||||
eto_prepend foo baz
|
||||
expect '<baz:bar>'
|
||||
recho $foo
|
||||
expect '<baz:bar>'
|
||||
recho ${foo-"bar"}
|
||||
|
||||
aa='aaa bbb ccc'
|
||||
|
||||
expect '<aaa bbb ccc>'
|
||||
recho ${zzz-"$aa"}
|
||||
expect '<bar>'
|
||||
recho ${zzz:-"bar"}
|
||||
expect '<bar>'
|
||||
recho "${zzz:-bar}"
|
||||
expect '<bar>'
|
||||
recho "${zzz:-"bar"}"
|
||||
|
||||
var=abcde
|
||||
expect '<abcde>'
|
||||
recho "${var:-xyz}"
|
||||
expect '<abcde>'
|
||||
recho "${var:=xyz}"
|
||||
expect '<xyz>'
|
||||
recho "${var:+xyz}"
|
||||
|
||||
set 'a b' c d e f
|
||||
expect '<a b> <c> <d> <e> <f>'
|
||||
recho ${1+"$@"}
|
||||
expect '<a b>'
|
||||
recho "${1-"$@"}"
|
||||
expect '<a> <b>'
|
||||
recho ${1-"$@"}
|
||||
expect '<a b> <c> <d> <e> <f>'
|
||||
recho "${1+$@}"
|
||||
expect '<a b> <c> <d> <e> <f>'
|
||||
recho "${1+"$@"}"
|
||||
|
||||
HOME=/usr/homes/chet
|
||||
somevar=
|
||||
expect "<$HOME>"
|
||||
recho ${somevar:-~}
|
||||
expect "<$HOME>"
|
||||
recho "${somevar:-~}"
|
||||
expect '<~>'
|
||||
recho "${somevar:-"~"}"
|
||||
expect '<\~>'
|
||||
recho "${somevar:-\~}"
|
||||
expect '<\ \~>'
|
||||
recho "${somevar:-\ \~}"
|
||||
expect '<\ \ \~>'
|
||||
recho "${somevar:-\ \ \~}"
|
||||
|
||||
expect "<$HOME>"
|
||||
recho ${somevar:-$HOME}
|
||||
expect "<$HOME>"
|
||||
recho "${somevar:-$HOME}"
|
||||
expect "<$HOME>"
|
||||
recho "${somevar:-"$HOME"}"
|
||||
expect '<$HOME>'
|
||||
recho "${somevar:-\$HOME}"
|
||||
expect '<\ $HOME>'
|
||||
recho "${somevar:-\ \$HOME}"
|
||||
expect '<\ \ $HOME>'
|
||||
recho "${somevar:-\ \ \$HOME}"
|
||||
|
||||
foo=bar
|
||||
expect "<'bar'>"
|
||||
recho "${foo+'$foo'}"
|
||||
expect "<'bar'>"
|
||||
recho "${fox='$foo'}"
|
||||
|
||||
P='*@*'
|
||||
expect '<*@>'
|
||||
recho "${P%"*"}"
|
||||
expect '<*@>'
|
||||
recho "${P%'*'}"
|
||||
|
||||
expect '<*@>'
|
||||
recho ${P%"*"}
|
||||
expect '<*@>'
|
||||
recho ${P%'*'}
|
||||
|
||||
expect '<*@*>'
|
||||
recho ${P%""}
|
||||
expect '<*@*>'
|
||||
recho ${P#""}
|
||||
|
||||
expect '<*@*>'
|
||||
recho ${P#"$foobar"}
|
||||
expect '<*@*>'
|
||||
recho ${P%"$foobar"}
|
||||
|
||||
s1=abcdefghijkl
|
||||
s2=efgh
|
||||
|
||||
first=${s1/$s2*/}
|
||||
expect '<abcd>'
|
||||
recho $first
|
||||
|
||||
last=${s1##$first}
|
||||
expect '<efghijkl>'
|
||||
recho $last
|
||||
|
||||
shift $#
|
||||
UNAME_RELEASE=${1:-4.2MP}
|
||||
|
||||
RELEASE=`expr "$UNAME_RELEASE" : '[^0-9]*\([0-9]*\)'` # 4
|
||||
case "$RELEASE" in
|
||||
"") RELEASE=0 ;;
|
||||
*) RELEASE=`expr "$RELEASE" + 0` ;;
|
||||
esac
|
||||
REL_LEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.\([0-9]*\)'` # 1
|
||||
REL_SUBLEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.[0-9]*.\([0-9]*\)'` # 2
|
||||
|
||||
expect '<4> <2>'
|
||||
recho $RELEASE $REL_LEVEL $REL_SUBLEVEL
|
||||
|
||||
b1()
|
||||
{
|
||||
b2 ${1+"$@"}
|
||||
}
|
||||
|
||||
b2()
|
||||
{
|
||||
recho $*
|
||||
recho $#
|
||||
}
|
||||
|
||||
expect '<1>'
|
||||
b1 ''
|
||||
|
||||
expect '<bar> <2>'
|
||||
b1 bar ''
|
||||
|
||||
expect '<bar> <2>'
|
||||
b1 '' bar
|
||||
|
||||
expect '<4>'
|
||||
b1 '' '' '' ''
|
||||
|
||||
NL="\\
|
||||
"
|
||||
|
||||
NNL="+$NL+"
|
||||
|
||||
expect '<--\> <-->'
|
||||
recho --$NL--
|
||||
expect '<--\^J-->'
|
||||
recho "--$NL--"
|
||||
|
||||
expect '<--+\> <+-->'
|
||||
recho --$NNL--
|
||||
expect '<--+\^J+-->'
|
||||
recho "--$NNL--"
|
||||
|
||||
expect '<-+\> <+-\> <->'
|
||||
recho -$NNL-$NL-
|
||||
|
||||
set ''
|
||||
expect '<xy>'
|
||||
recho "$*xy"
|
||||
expect '<xy>'
|
||||
recho "x$*y"
|
||||
expect '<xy>'
|
||||
recho "xy$*"
|
||||
expect '<xy>'
|
||||
recho x"$*"y
|
||||
expect '<xy>'
|
||||
recho xy"$*"
|
||||
expect '<xy>'
|
||||
recho "$*"xy
|
||||
expect '<>'
|
||||
recho "$*"
|
||||
expect nothing
|
||||
recho $*
|
||||
|
||||
unset undef ; set ""
|
||||
|
||||
expect '<>'
|
||||
recho ${undef-"$*"}
|
||||
expect '<xy>'
|
||||
recho ${undef-"x$*y"}
|
||||
expect '<xy>'
|
||||
recho ${undef-"$*xy"}
|
||||
expect '<xy>'
|
||||
recho ${undef-"xy$*"}
|
||||
expect '<xy>'
|
||||
recho ${undef-x"$*"y}
|
||||
expect '<xy>'
|
||||
recho ${undef-xy"$*"}
|
||||
expect '<xy>'
|
||||
recho ${undef-"$*"xy}
|
||||
expect '<>'
|
||||
recho "${undef-$*}"
|
||||
expect nothing
|
||||
recho ${undef-$*}
|
||||
|
||||
expect '<>'
|
||||
recho ${undef-"$zzz"}
|
||||
expect '<x>'
|
||||
recho x${undef-"$zzz"}
|
||||
expect '<x>'
|
||||
recho x${undef-"$@"}
|
||||
expect nothing
|
||||
recho ${undef-"$@"}
|
||||
expect '<x>'
|
||||
recho ${undef-"$zzz"}x
|
||||
expect '<x>'
|
||||
recho ${undef-"$@"}x
|
||||
expect '<x>'
|
||||
recho "$@"x
|
||||
expect '<x>'
|
||||
recho "$zzz"x
|
||||
expect '<^?>'
|
||||
recho ${undef-}
|
||||
expect '<^?>'
|
||||
recho ${undef-""}
|
||||
|
||||
yyy=""
|
||||
recho "$xxx"x
|
||||
recho "$yyy"x
|
||||
|
||||
set "" "abd" ""
|
||||
recho "$@"x
|
||||
recho "$@"$xxx
|
||||
|
||||
OIFS="$IFS"
|
||||
|
||||
arg=a,b,c,d,e,f
|
||||
|
||||
IFS=,
|
||||
|
||||
export z=$arg
|
||||
|
||||
eval z1=\"$arg\"
|
||||
|
||||
IFS="$OIFS"
|
||||
|
||||
recho $z
|
||||
recho $z1
|
||||
|
||||
# should give an error
|
||||
abc\=def
|
||||
|
||||
zz="a b c d e"
|
||||
declare a=$zz
|
||||
|
||||
recho "$a"
|
||||
recho $a
|
||||
|
||||
recho $(echo "foo$(echo ")")")
|
||||
|
||||
# test backslash escapes
|
||||
|
||||
recho \a
|
||||
recho \\a
|
||||
|
||||
recho "\a"
|
||||
recho "\\a"
|
||||
|
||||
recho '\a'
|
||||
recho '\\a'
|
||||
|
||||
recho $(zecho \a)
|
||||
recho $(zecho \\a)
|
||||
|
||||
recho $(zecho "\a")
|
||||
recho $(zecho "\\a")
|
||||
|
||||
recho $(zecho '\a')
|
||||
recho $(zecho '\\a')
|
||||
|
||||
recho `zecho \a`
|
||||
recho `zecho \\a`
|
||||
|
||||
recho `zecho "\a"`
|
||||
recho `zecho "\\a"`
|
||||
|
||||
recho `zecho '\a'`
|
||||
recho `zecho '\\a'`
|
||||
|
||||
a=foo
|
||||
|
||||
recho \$a
|
||||
recho \\$a
|
||||
|
||||
recho "\$a"
|
||||
recho "\\$a"
|
||||
|
||||
recho '\$a'
|
||||
recho '\\$a'
|
||||
|
||||
recho $(zecho `zecho \a`)
|
||||
recho $(zecho `zecho \\a`)
|
||||
|
||||
recho $(zecho `zecho "\a"`)
|
||||
recho $(zecho `zecho "\\a"`)
|
||||
|
||||
recho $(zecho `zecho '\a'`)
|
||||
recho $(zecho `zecho '\\a'`)
|
||||
|
||||
# should echo G { I K }
|
||||
recho ${abc:-G { I } K }
|
||||
|
||||
abc=hi
|
||||
|
||||
# should echo hi K }
|
||||
recho ${abc:-G { I } K }
|
||||
|
||||
# should echo a*
|
||||
unset foo
|
||||
recho "${foo:-"a"}*"
|
||||
|
||||
f ()
|
||||
{
|
||||
echo "Number of args: $#"
|
||||
echo "<\${*-x}>: <${*-x}>"
|
||||
echo "<\${@-x}>: <${@-x}>"
|
||||
}
|
||||
|
||||
f
|
||||
f ''
|
||||
f '' ''
|
||||
|
||||
set 1 2 3 4 5
|
||||
|
||||
expect '<5>'
|
||||
recho ${#}
|
||||
expect '<5>'
|
||||
recho ${#:foo}
|
||||
expect '<5>'
|
||||
recho ${#:-foo}
|
||||
expect '<5>'
|
||||
recho ${#-posparams}
|
||||
expect '<5>'
|
||||
recho ${#:-posparams}
|
||||
|
||||
expect '<0>'
|
||||
recho ${#!}
|
||||
|
||||
expect nothing
|
||||
recho $!
|
||||
expect nothing
|
||||
recho ${!}
|
||||
|
||||
expect nothing
|
||||
recho $8
|
||||
expect nothing
|
||||
recho ${8}
|
||||
|
||||
shift $#
|
||||
|
||||
expect '<0>'
|
||||
recho ${#}
|
||||
expect '<0>'
|
||||
recho ${#:foo}
|
||||
expect '<0>'
|
||||
recho ${#:-foo}
|
||||
expect '<0>'
|
||||
recho ${#-posparams}
|
||||
expect '<0>'
|
||||
recho ${#:-posparams}
|
||||
|
||||
expect '<posparams>'
|
||||
recho ${!-posparams}
|
||||
expect '<posparams>'
|
||||
recho ${!:-posparams}
|
||||
|
||||
expect '<2>'
|
||||
recho ${#-}
|
||||
|
||||
expect '<0>'
|
||||
recho ${#-posparams}
|
||||
|
||||
expect '<0>'
|
||||
recho ${#?:-xyz}
|
||||
|
||||
expect '<1>'
|
||||
recho ${#?}
|
||||
|
||||
set a b c d e
|
||||
|
||||
expect '<5>'
|
||||
recho ${#}
|
||||
expect '<5>'
|
||||
recho ${#?:-xyz}
|
||||
|
||||
shift $#
|
||||
|
||||
expect '<0>'
|
||||
recho ${#:-foo}
|
||||
|
||||
expect a bad substitution error
|
||||
recho ${#:}
|
||||
expect a bad substitution error
|
||||
recho ${#/}
|
||||
expect a bad substitution error
|
||||
recho ${#%}
|
||||
expect a bad substitution error
|
||||
recho ${#=}
|
||||
expect a bad substitution error
|
||||
recho ${#+}
|
||||
expect a bad substitution error
|
||||
recho ${#1xyz}
|
||||
|
||||
expect a math syntax error
|
||||
recho ${#:%}
|
||||
|
||||
expect '<0>'
|
||||
recho ${#:-}
|
||||
|
||||
set --
|
||||
unset a b
|
||||
|
||||
x=a
|
||||
y=b
|
||||
|
||||
IFS=+
|
||||
|
||||
expect '<a+b>'
|
||||
recho $x+$y
|
||||
expect '<+>'
|
||||
recho $a+$b
|
||||
|
||||
expect '<+>'
|
||||
recho + "$@"
|
||||
expect '<+>'
|
||||
recho +"$@"
|
||||
|
||||
# variants of nested curly braces inside ${...} expressions
|
||||
|
||||
# IFS is not the standard one
|
||||
|
||||
expect '<G { I>' '<K>' '<}>'
|
||||
recho ${gik:-G { I } K }
|
||||
|
||||
abc=hi
|
||||
|
||||
expect '<hi>' '<K>' '<}>'
|
||||
recho ${abc:-G { I } K }
|
||||
|
||||
# reset IFS to the default
|
||||
IFS='
|
||||
'
|
||||
|
||||
# nested ${...} inside ${...} are handled specially
|
||||
unset XXX FOO BAR
|
||||
expect '<xxx>' '<yyy>'
|
||||
XXX=xxx
|
||||
FOO=${BAR:-${XXX} yyy}
|
||||
recho $FOO
|
||||
|
||||
# this was a bug in versions of bash prior to bash-2.04-release
|
||||
set -- ''
|
||||
expect 1
|
||||
echo $#
|
||||
expect '<>'
|
||||
recho "${@}"
|
||||
expect '<>'
|
||||
recho "${@-}"
|
||||
expect '<>'
|
||||
recho "${@:-}"
|
||||
|
||||
# this was a bug in bash-2.04, fixed in 2.05
|
||||
set -- a b
|
||||
expect '<:a:>' '<:b:>'
|
||||
for i in "${@-}"; do recho :$i:; done
|
||||
|
||||
# I believe that ksh93 does these wrong -- we're using the rhs, so shouldn't
|
||||
# it behave the same as ""?
|
||||
set --
|
||||
expect '<>'
|
||||
recho "${@-}"
|
||||
expect '<>'
|
||||
recho "${@:-}"
|
||||
Reference in New Issue
Block a user