запуск команд bash pipe в фоновом режиме с & ampersand - PullRequest
14 голосов
/ 12 июля 2011
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 `;'

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

Ответы [ 3 ]

20 голосов
/ 12 июля 2011

Вы можете включить & в браслеты:

time for i in `ls /tmp/chunk*`; do
  {(cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10}) &};
done
20 голосов
/ 12 июля 2011

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

time for i in `ls /tmp/chunk*`; do
  (cat $i | tr ' ' '\n' | sort | uniq > /tmp/line${i:10} &)
done
12 голосов
/ 12 июля 2011

& является разделителем и поэтому является избыточным с;IE удалить финал;

for i in /tmp/chunk*; do tr ' ' '\n' <$i | sort -u > /tmp/line${i:10}& done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...