illumos-port-bash/tests/comsub-posix.tests

262 lines
3.3 KiB
Plaintext

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
: ${HOME:=/}
# works right
echo ab$(echo mnop)yz
# works right
echo ab$(echo mnop
)yz
#
# works right
echo $(echo ab
)
# works right
echo $(
)
echo $()
echo ab$()cd
echo ab$( )cd
echo $(case a in (a) echo sh_352.26ax; esac )
echo $(case a in (a) echo sh_352.26ay; esac)
echo $((echo sh_352.25a);(echo sh_352.25b))
echo $(echo sh_352.27 ')' ")" \)
# ) comment
)
echo $(
echo abc # a comment with )
)
echo $(
cat <<eof
here doc with )
eof
)
echo $(
echo ')'
)
unset x
x=$(cat <<"EOF"
bad' syntax
EOF
)
echo "$x"
unset x
echo $(for f in \); do echo a; done )
echo $(case a in a) echo sh_352.26a; esac )
echo $(case a in a) echo sh_352.26a; esac)
echo $(case a in
(a) echo sh_352.26
;;
esac
)
echo $(case a in
a) echo sh_352.26
;;
esac
)
echo $(case a in
a) echo sh_352.26
;;
esac
)
echo $(( 4<(2+3) ? 1 : 32))
echo $(cat << end
sh_352.28 )
end
)
echo $(cat <<- end
sh_352.28 )
end
)
k=$(case x in x) echo k;; esac)
echo $k
x=$(
case $(ls) in
example) echo foobix;;
esac
)
echo $( echo ab\
cd)
echo `echo ab
cd`
echo `echo ab #xyz
cd`
echo "$(echo abcde)
"
recho "$(echo abcde)
"
echo $(echo abcde)\
foo
recho $(echo abcde)\
foo
recho "wx$(echo abcde)yz"
recho "$(echo abcde)"
echo $(cat <<eof
'
eof
)
echo after 1
echo $(cat <<\eof
'
eof
)
echo after 2
echo "$(cat <<\eof
'
eof
)"
echo after 3
echo "$(cat <<\eof
`
eof
)"
echo after 4
echo $(
cat << ')'
hello
)
)
echo after 5
echo $(cat <<'eof'
'
eof
)
echo after 6
echo $(
case x in x) echo x;; esac
)
echo $(
case x in x) echo x;; esac # followed by a comment
)
echo $(
case x in (x) echo x;; esac
)
echo $(
echo 'quoted )'
)
echo $(
echo comment # with )
)
echo $(
cat <<\eof
here-doc with )
eof
)
echo $(
cat <<\eof
here-doc with \()
eof
)
echo $(
cat <<\)
here-doc terminated with a parenthesis
)
)
echo $(
cat <<\eof
' # or a single back- or doublequote
eof
)
echo $(
echo line terminated with a backslash # \
)
${THIS_SH} ./comsub-posix1.sub
${THIS_SH} ./comsub-posix2.sub
${THIS_SH} ./comsub-posix3.sub
# produced a parse error through bash-4.0-beta2
: $(echo foo)"
"
# produced a parse error through bash-4.1
unset x
x=$(
echo yes
# a comment with " ' \
)
echo $x
unset x
# fixed after bash-4.0 released
: $(case a in a) echo ;; # comment
esac)
# fixed after bash-4.3 released
testing=$(
echo test | while read line; do
case $line in
test) echo saw test ;;
*) echo other ;;
esac
done
)
# recommended to be parsed as a nested comsub instead of arithsub
echo $(( echo ab cde ) )