# try running this with bash, ksh, ash, and hush.

# simple quoting rules.
echo a  b
echo "a  b"
echo a "" b
echo a '' b
echo hello?
echo "hello?"
echo t* hello
echo t\* hello

# quick and painless exit for lash
if false; then true; exit; fi

# fairly simple command substitution
echo `echo -e foo\\\necho bar`

echo THIS IS A TEST >foo
cat $(echo FOO | tr 'A-Z' 'a-z')
cat foo | tr 'A-Z' 'a-z'
cat $(echo FOO | tr 'A-Z' 'a-z') | tr 'A-Z' 'a-z'

cat foo | if true;  then tr 'A-Z' 'a-z'; else echo bar1; fi
cat foo | if false; then tr 'A-Z' 'a-z'; else echo bar2; fi
if true;  then tr 'A-Z' 'a-z'; else echo bar3; fi <foo
if false; then tr 'A-Z' 'a-z'; else echo bar4; fi <foo
if true || false; then echo foo; else echo bar5; fi
if true && false; then echo bar6; else echo foo; fi

# basic distinction between local and env variables
unset FOO
FOO=bar env | grep FOO
echo "but not here: $FOO"
FOO=bar
env | grep FOO
echo "yes, here: $FOO"
FOO=
echo a $FOO b
echo "a $FOO b"

# not quite so basic variables.  Credit to Matt Kraai.
unset FOO
FOO=bar
export FOO
env | grep FOO
unset FOO
export FOO=bar
FOO=baz
env | grep FOO

# interaction between environment variables and if/then and subshells
FOO=default
if true; then FOO=new; fi
echo $FOO
FOO=default
(FOO=bogus)
echo $FOO

# make sure we can duplicate file descriptors properly
echo replacement >foo 2>&1
cat foo
cat doesnt_exist >foo 2>&1
tr 'a-z' 'A-Z' <foo

# fairly simple example of hush expanding variables too early
unset TMP
rm -f fish
TMP=fish && >$TMP
ls fish

# ash, lash, and hush do not create fish; bash and ksh do.
# Thanks to Tapani Tarvainen <tt@mit.jyu.fi> for this stress test.
unset TMP
rm -f fish
TMP=fish >$TMP
ls fish

# The following example shows that hush's parser is
# not _really_ Bourne compatible
echo "echo Hello World" >"a=b"
unset a
chmod a+x "a=b"
PATH=$PATH:.
"a=b"
echo $a

# assuming the shell wasn't too buggy, clean up the mess
rm -f a=b fish foo
