bashshell

running bash pipe commands in background with & 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 `;'

Whats the syntax error in the above command? I also tried using {} and ended the piped commands with ;. But same error shows up ...


Solution

  • You should put the & inside the (), if you want to run all the jobs in parallel in the background.

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