Запуск команд bash в фоновом режиме с помощью &ampersand

time for i in `ls /tmp/chunk*`; do (cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10}) & ;done
bash: syntax error near unexpected token `;'

Какова синтаксическая ошибка в приведенной выше команде? Я также попытался использовать {} и завершил команды с помощью ;. Но такая же ошибка появляется...

Ответ 1

Вы должны поместить & внутри (), если вы хотите запускать все задания параллельно в фоновом режиме.

time for i in `ls /tmp/chunk*`; do
  (cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10} &)
done

Ответ 2

Вы можете включить и в наручники:

time for i in `ls /tmp/chunk*`; do
  {(cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10}) &};
done

Ответ 3

& является разделителем и поэтому избыточным; И.Е. удалить окончательный;

for i in /tmp/chunk*; do tr ' ' '\n' <$i | sort -u > /tmp/line${i:10}& done