在bash中,我们通过后台运行(&)实现多线程。
#!/bin/bash
tmpt="/tmp/$$.fifo"
mkfifo $tmpt #新建一个fifo类型的文件
exec 6<>$tmpt#将fd6指向fifo类型
rm $tmpt
t_sum=0;
function fun3()#创建函数
{
t_sum=$(($t_sum+1))
}
for ((i=0;i<5;i++));do#指定开辟的线程数
echo
done >& 6 #事实上就是在fd6中放置了5个回车符
for ((i=0;i<5;i++));do#放入后台并发循环5次
read -u 6
{
for((j=0;j<7;j++));do#fun3执行的次数
{
fun3
echo "lllllllllllll"
}
done
echo $t_sum;
t_sum=0;
echo >& 6 #当进程结束以后,再向fd6中加上一个回车符,即补上了read -u6减去的那个
}&
done
wait
exec 6>-#关闭fd6