
正文
shell 多线程
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
不熟悉 io 重定向的童鞋,先学习一下相关知识 http://www.linuxplus.org/kb/io-redirection.html
下面是简单代码
#!/bin/bash tmpfile='fifo'
mkfifo $tmpfile #创建一个先进先出队列 exec 6<>$tmpfile #使用文件描述符6关联$tmpfile for((i=0;i<5;i++));do #初始化 你想并发几个就循环几次, echo >&6 就是往队列里放5个空值,让后面的 read -u 6 可以一次读取一行
echo >&6
done for i in {1..100};do # 这里只是举例打印100个数,你也可以读取一个大文件
read -u 6 # 能读出来就继续下面的任务,没有东西可读就挂起在这里,等待后面的 echo >&6 往里再放一个空行
{ echo $i # 你实际要执行的命令
sleep 3 # 为了让你看到效果,可删除这条命令
echo >&6 # 补充一个空行,让 read 可以继续往下运行
}& # 把你的任务放后台才能并发
done exec 6>&- # 关闭文件描述符6
rm -f $tmpfile






![【电子书】[职业技术] 《Linux命令行与shell脚本编程大全(第3版)》[Richard Blum][epub+mobi+azw3] 【电子书】[职业技术] 《Linux命令行与shell脚本编程大全(第3版)》[Richard Blum][epub+mobi+azw3]](https://www.04ip.com/template/qe/style/noimg/13.jpg)

