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 hello
el archivo world
. En POSIX sh
, se ejecuta hello
en 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 [[ x
es 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á.