i-bash/tests/more-exp.tests
2009-09-12 16:46:49 +00:00

303 lines
4 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"}*"