Shell 本身不支持真正意义上的多线程,但你可以使用后台任务(&)来实现类似的功能。下面是一个使用 for
循环和后台任务实现多线程的简单例子:
#!/bin/bash
# 一个简单的函数,模拟耗时的任务
task() {
sleep 1 # 假设的耗时操作
echo "Task $1 is done"
}
# 使用 for 循环启动后台任务
for i in {1..5}; do
task $i & # 在后台运行 task 函数,并传入变量 i 的值
done
# 等待所有后台任务完成
wait
echo "All tasks are completed"
在这个脚本中,我们定义了一个名为 task
的函数,它接受一个参数并模拟耗时的任务(例如,文件处理或网络请求)。然后,我们使用 for
循环来遍历一些任务,并通过在每次调用后面加上 &
符号来将其放入后台运行。wait
命令用于等待所有后台任务完成。
这种方式可以实现类似于多线程的效果,但请注意,它并不是真正的多线程,因为它在内核级别上依然是按顺序执行的,只是通过任务切换的速度非常快,给人并行执行的感觉。