shell并行(多线程)脚本
原理
#!/bin/bash
job_1 &
job_2 &
...
job_n &
wait #必须
echo "all done" #可选提示所有命令均已完成
exit
实例
#!/bin/bash
#生成5个脚本
for i in 1 2 3 4 5; do
#赋值等号前后不可留空格
#变量定义无需带$
#单引号中变量不取值,直接输出
file_name='list_'$i
#使用$变量使用变量的值
#可使用{}指定变量名范围,避免变量名与紧跟的字符混淆
touch ${file_name}
echo "#!/bin/bash" > ${file_name} #双引号内变量求值
echo "echo start of $i" >> ${file_name}
echo "sleep 5" >> ${file_name}
echo "echo end of $i" >> ${file_name}
chmod +x ${file_name}
done
#并行运行前面生成的5个脚本
for file_name in `ls list_*`; do #反引号括起来求命令行输出
./${file_name} &
done
wait
echo 'all done'
exit
执行效果
参考
Linux shell中的wait命令的使用_琴酒网络的博客-CSDN博客_shell wait命令
shell中的for循环用法详解_linux shell_脚本之家
https://www.linuxprobe.com/shell-for-while.html
linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 ) - gaomatlab - 博客园