2001-05-24 22:45:33 +05:30
|
|
|
# try running this with bash, ksh, ash, and hush.
|
2001-05-25 04:35:13 +05:30
|
|
|
|
|
|
|
# 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
|
2001-05-24 22:45:33 +05:30
|
|
|
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
|
|
|
|
|
2001-06-05 23:18:47 +05:30
|
|
|
# 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
|
|
|
|
|
2001-05-25 04:35:13 +05:30
|
|
|
# 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.
|
2001-05-24 22:45:33 +05:30
|
|
|
# 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
|