Aquí hay un código que hace algo diferente en POSIX sh y Bash:
hello &> world
No sé si eso es "inválido" para usted.
En Bash, redirige tanto la salida estándar como el error estándar desde helloel archivo world. En POSIX sh, se ejecuta helloen segundo plano y luego realiza una redirección vacía world, truncando (es decir, se trata como & >).
Hay muchos otros casos en los que las extensiones Bash harán lo suyo cuando se ejecuten bash, y tendrían diferentes efectos en un POSIX puro sh. Por ejemplo, la expansión de llaves es otra, y también funciona igual en el modo POSIX de Bash y no.
En cuanto a los errores de sintaxis estática, Bash tiene ambas palabras reservadas (como [[ y time) no especificadas por POSIX, de modo que [[ xes un código de shell POSIX válido pero un error de sintaxis de Bash y un historial de varios errores de incompatibilidad de POSIX que pueden dar lugar a errores de sintaxis, como el de esta pregunta :
x=$(cat <<'EOF'
`
EOF
)
bash: line 2: unexpected EOF while looking for matching ``'
bash: line 5: syntax error: unexpected end of file
Syntax-errors-only es una definición bastante peligrosa de "inválido" para cualquier circunstancia donde sea importante, pero ahí está.