expect() { echo expect "$@" } expect '<^J^J^J>' recho $'\n\n\n' expect '<++^J++>' f=$'\n' recho "++$f++" unset f z1=$'' expect '<>' recho "$z1" ZIFS=$'\n'$'\t'$' ' expect '<^J^I >' recho "$ZIFS" expect '' recho $'abc' expect '<^M^[^Gabc>' recho $'\r\e\aabc' D=$"hello"," "$"world" expect ' ' recho $D expect '' recho "$D" D=$"" expect '<>' recho "$D" world=chet expect '<$hello, world>' recho \$"hello, world" expect '' recho $"hello, \$world" expect '' recho $"hello, \"world\"" expect '' recho $"hello"', $"world"' expect '' recho $'hello, $"world"' expect '<$hello, chet>' recho \$"hello, $world" expect '' recho $"hello, $world" z=$'\v\f\a\b' case "$z" in $'\v\f\a\b') echo ok;; *) echo bad;; esac # Dave Korn says this should be allowed and echo 'abcd' echo $'\'abcd\'' # printf translates \' to ' ... printf "\'abcd\'\n" # but echo -e doesn't echo -e "\'abcd\'" echo -e "\\'abcd\\'" # and what do we do about unrecognized escape sequences? shopt -s xpg_echo recho $'A\CB' recho "A\CB" cde=c recho $'ab$cde' printf "%b\n" 'A\CB' printf 'A\CB\n' echo 'A\CB' world=chet recho $'hello, $"world"' recho $'hello, \$"world"' recho $'hello, $\"world"' recho "hello, $"world"" # ansi quoting inside double-quoted command subst - bash-3.1 bug echo $(set -- $'a b'; echo $#) echo "$(set -- $'a b'; echo $#)" echo "$(echo $';foo')" args () { for a in "$@";do echo "'$a'";done } unset mytab recho "${mytab:-$'\t'}" recho "$( args $'A\tB' )"