for-loop - 将 ksh for 循环转换为异步
问题描述
我正在使用传统的 sh for 循环,
for a in $ab; do
source a.ksh
source b.ksh
done
循环中的每个脚本都从数组中获取输入,执行直到完成。通常&&
用于附加后台进程。
任何关于使每次迭代都无需等待即可运行的想法都会很棒
解决方案
了解你的外壳。您的循环可能没有意义。确定您使用的是哪个 shell,因为您同时标记了 Bourne shell ( sh
) 和 Korn shell ( ksh
)。
source
不是 Korn-shell 原生的,而是其他非 Korn shell 原生的,例如csh
和bash
。
在 pdksh 或某些发行版上,source
可能只是 Korn shell 内置命令的别名,该命令在当前环境.
中执行指定的脚本(或函数) 。(即没有单独的PID,因此同步执行)。
如果您想启动一个单独的环境(即一个单独的进程,不同的 PID),您必须省略source
并在命令行末尾附加一个与号 (&)。与符号告诉 Korn shell 启动一个单独的进程并在该进程中异步运行您的脚本(而不是等待它完成)。
&
因此,如果您想将两个单独的命令行作为并发任务(即异步)运行,则每个命令行的最后一个字符都必须是 a 。
推荐阅读
- java - 将类转换为服务
- r - Latex数学环境中的R Markdown内联代码
- apache-flink - 在 Flink 中拆分流
- java - 如何像在 Visual Studio 中一样使 Spring/Eclipse IntelliSense 自动完成?
- c# - 如何定义图片框坐标
- amazon-web-services - 与 AWS Data Exchange 相关的等效 Google Cloud Platform 产品是什么
- mongodb - 在 MongoDB 中合并来自 2 个集合的文档并覆盖字段上的属性
- c# - 如何使用 FireBaseDatabase.net 实现“仅增值”侦听器
- c# - 无法使用 Microsoft Graph API C# 代码获取部门名称、经理等
- hibernate - 如果生成类型是序列,是否会立即保存并保存调用序列的下一个值?