304 lines
4 KiB
Text
304 lines
4 KiB
Text
|
|
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 '<>'
|
|||
|
|
recho "$*"
|
|||
|
|
expect nothing
|
|||
|
|
recho $*
|
|||
|
|
|
|||
|
|
unset undef ; set ""
|
|||
|
|
|
|||
|
|
recho ${undef-"$zzz"}
|
|||
|
|
recho x${undef-"$zzz"}
|
|||
|
|
recho x${undef-"$@"}
|
|||
|
|
recho ${undef-"$@"}
|
|||
|
|
recho ${undef-"$zzz"}x
|
|||
|
|
recho ${undef-"$@"}x
|
|||
|
|
recho "$@"x
|
|||
|
|
recho "$zzz"x
|
|||
|
|
recho ${undef-}
|
|||
|
|
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"}*"
|