设想:
$ cat libs.txt
lib.a
lib1.a
$ cat t1a.sh
f1()
{
local lib=$1
stdbuf -o0 printf "job for $lib started\n"
sleep 2
stdbuf -o0 printf "job for $lib done\n"
}
export -f f1
/usr/bin/time -f "elapsed time %e" cat libs.txt | SHELL=$(type -p bash) parallel --line-buffer --jobs 2 f1
$ bash t1a.sh
elapsed time 0.00
job for lib.a started
job for lib1.a started
job for lib.a done
job for lib1.a done
在这里我们看到elapsed time 0.00
出现前命令的输出。为什么?
如何使elapsed time 0.00
出现后命令的输出?
答案1
尝试:
cat libs.txt | SHELL=$(type -p bash) /usr/bin/time -f "elapsed time %e" parallel --line-buffer --jobs 2 f1