Você precisa usar { list;}
em vez de (list)
:
if ! { [ -f file1 ] && [ -f file2 ] && [ -f file3 ]; }; then
: do something
fi
Ambos são Comandos de agrupamento , mas { list;}
executa comandos no momento ambiente de shell.
Observe que o ;
em { list;}
é necessário para delimitar a lista de }
palavra reversa, você também pode usar outro delimitador. O espaço (ou outro delimitador) após {
também é necessário.