export LC_ALL=C export LANG=C # test out the new $(< filename) code # it should be exactly equivalent to $(cat filename) FILENAME=/tmp/bashtmp.x$$ trap 'rm -f $FILENAME' 0 cat >$FILENAME << EOF line 1 line 2 line 3 EOF LINES1=$(cat $FILENAME) LINES2=$(< $FILENAME) if [[ $LINES1 != $LINES2 ]]; then echo 'whoops: $(< filename) failed' fi LINES2=$(< /tmp/bashtmp.x*) if [[ $LINES1 != $LINES2 ]]; then echo 'whoops: $(< filename) with glob expansion failed' fi # but the glob expansion in the redirection should fail in posix mode set -o posix LINES2=$(< /tmp/bashtmp.x*) set +o posix # now see what happens when we try it with a non-existant file LINES3=$(< /tmp/redir-notthere) echo $?