1*3e3895bfSKrzysztof Piecuch# $FreeBSD: head/bin/sh/tests/expansion/plus-minus4.0 211080 2010-08-08 17:03:23Z jilles $ 23df4d8b0SPeter Avalos 33df4d8b0SPeter Avalos# These may be a bit unclear in the POSIX spec or the proposed revisions, 43df4d8b0SPeter Avalos# and conflict with bash's interpretation, but I think ksh93's interpretation 53df4d8b0SPeter Avalos# makes most sense. In particular, it makes no sense to me that single-quotes 63df4d8b0SPeter Avalos# must match but are not removed. 73df4d8b0SPeter Avalos 83df4d8b0SPeter Avalose= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' 93df4d8b0SPeter Avalosh='##' 103df4d8b0SPeter Avalosfailures='' 113df4d8b0SPeter Avalosok='' 123df4d8b0SPeter Avalos 133df4d8b0SPeter Avalostestcase() { 143df4d8b0SPeter Avalos code="$1" 153df4d8b0SPeter Avalos expected="$2" 163df4d8b0SPeter Avalos oIFS="$IFS" 173df4d8b0SPeter Avalos eval "$code" 183df4d8b0SPeter Avalos IFS='|' 193df4d8b0SPeter Avalos result="$#|$*" 203df4d8b0SPeter Avalos IFS="$oIFS" 213df4d8b0SPeter Avalos if [ "x$result" = "x$expected" ]; then 223df4d8b0SPeter Avalos ok=x$ok 233df4d8b0SPeter Avalos else 243df4d8b0SPeter Avalos failures=x$failures 253df4d8b0SPeter Avalos echo "For $code, expected $expected actual $result" 263df4d8b0SPeter Avalos fi 273df4d8b0SPeter Avalos} 283df4d8b0SPeter Avalos 293df4d8b0SPeter Avalostestcase 'set -- ${e:-'"'"'}'"'"'}' '1|}' 303df4d8b0SPeter Avalostestcase "set -- \${e:-\\'}" "1|'" 313df4d8b0SPeter Avalostestcase "set -- \${e:-\\'\\'}" "1|''" 323df4d8b0SPeter Avalostestcase "set -- \"\${e:-'}\"" "1|'" 333df4d8b0SPeter Avalostestcase "set -- \"\${e:-'}'}\"" "1|''}" 343df4d8b0SPeter Avalostestcase "set -- \"\${e:-''}\"" "1|''" 353df4d8b0SPeter Avalostestcase 'set -- ${e:-\a}' '1|a' 363df4d8b0SPeter Avalostestcase 'set -- "${e:-\a}"' '1|\a' 373df4d8b0SPeter Avalos 383df4d8b0SPeter Avalostest "x$failures" = x 39