[..] you have to escape \( \) or preferably
combine [..] expressions.[ -e ~/.bashrc -a ( -x /bin/dash -o -x /bin/ash ) ]In POSIX:
[ -e ~/.bashrc ] && { [ -x /bin/dash ] || [ -x /bin/ash ]; }Obsolete XSI syntax:
[ -e ~/.bashrc -a \( -x /bin/dash -o -x /bin/ash \) ][ is implemented as a regular command, so (
is not special.
The preferred way is not to group inside [ .. ] and
instead compose multiple [ .. ] statments using the shell's
&&, || and { ..; }
syntax, since this is well defined by POSIX.
Some shells, such as Bash, support grouping with
\( .. \), but this is an obsolete XSI-only extension.
None
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.