rm *shell_test* 2>/dev/null

>\shell_test
echo *shell_test*
rm *shell_test*

>\\shell_test
echo *shell_test*
rm *shell_test*

>"\shell_test"
echo *shell_test*
rm *shell_test*

>"\\shell_test"
echo *shell_test*
rm *shell_test*


cat <<\shell_test
Here1
shell_test
echo Ok1

cat <<\\shell_test
Here2
\shell_test
echo Ok2

cat <<"\shell_test"
Here3
\shell_test
echo Ok3

cat <<"\\shell_test"
Here4
\shell_test
echo Ok4


echo Now with variable refs
i=1


>\shell_test_$i
echo *shell_test*
rm *shell_test*

>\\shell_test_$i
echo *shell_test*
rm *shell_test*

>"\shell_test_$i"
echo *shell_test*
rm *shell_test*

>"\\shell_test_$i"
echo *shell_test*
rm *shell_test*

echo Done;exit
# UNFIXED BUG. bash apparently will expand $i even in terminating delimiter.
# http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
# does not mandate this behavior.
# This is not likely to be used much in real-world.

cat <<\shell_test_$i
Here1
shell_test_$i
echo Ok1

cat <<\\shell_test_$i
Here2
\shell_test_$i
echo Ok2

cat <<"\shell_test_$i"
Here3
\shell_test_$i
echo Ok3

cat <<"\\shell_test_$i"
Here4
\shell_test_$i
echo Ok4