O &
, assim como ;
, é um operador de terminador de lista . Eles têm a mesma sintaxe e podem ser usados de forma intercambiável (dependendo do que você deseja fazer). Isso significa que você não quer, ou precisa, command1 &; command2
, tudo que você precisa é command1 & command2
.
Então, no seu exemplo, você poderia escrever:
for i in {1..10}; do wait file$i & done
e cada comando wait
será lançado em segundo plano e o loop passará imediatamente para o próximo.