linux - 将 Windows 批处理文件移植到 shell 脚本。如果可能的话并行执行任务

标签 linux bash shell batch-file sh

我有这个基于 Windows 的版本,它在多线程中打开我当前的任务。不过,它打开多个线程仍然可以接受。 我想把它移植到 Linux 上吗?我对 Linux 的了解有限,因此希望有人能在这里提供帮助。

clean.bat

ant -DCorrelator.port="15800" clean

*start_parallel.bat*

call clean.bat
start "Engine 1500" ant -Dengine.port="15800" -Dfamily.one="true" -Dfamily.two="false" start
start "Engine 1505" ant -Dengine.port="15805" -Dfamily.one="false" -Dfamily.two="true" start

最佳答案

我必须承认,我不确定我完全理解你的场景,但是要在 Linux 中并行运行任务,你可以使用 & 将它们放在后台。

示例:

start "Engine 1500" ant start &
start "Engine 1505" ant start &

要调用其他脚本,只需从第一个 shell 脚本执行它即可。

所以总共你会有:

clean.sh:

#!/bin/sh
ant -DCorrelator clean

start_parallel.sh

#!/bin/sh
clean.sh
start "Engine 1500" ant -Dengine.port="15800" -Dfamily.one="true" -Dfamily.two="false" start &
start "Engine 1505" ant -Dengine.port="15800" -Dfamily.one="false" -Dfamily.two="true" start &

确保使用 chmod 使两个脚本可执行:

chmod +x clean.sh
chmod +x start_parallel.sh

Linux 仅在您的路径 (echo $PATH) 中查找可执行脚本。如果要在不同的目录中执行脚本,则必须至少给出其相对路径。如果脚本位于当前目录中,请执行以下操作:

./start_parallel.sh

您还必须在脚本中将 clean.sh 调用为 ./clean.sh。为了避免这种情况,我建议您将脚本放入路径中的目录中,通常是 /usr/local/bin/ 或在主目录中创建 bin 目录,然后使用 例如.profile` 将其添加到您的路径中。

干杯。

关于linux - 将 Windows 批处理文件移植到 shell 脚本。如果可能的话并行执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560928/

相关文章:

Linux "echo -n"未被刷新

bash - 如何使用 Bash 为变量引用文件?

linux - Manage ctrl+z and bg or & signal in shell script - (shell脚本中的后台进程)

sql - Linux Sqliteman 安装后所有按钮和选项卡都显示为禁用,需要配置帮助吗?

linux - 如何根据Linux中的条件(使用awk或其他方法)从另一个csv文件中的一个csv文件中替换行?

c++ - fastCGI 环境变量 - 我可以从哪里获得(标准/官方)列表?

bash - 从脚本中通过管道传输 stdout/stderr 时不显示 read -p 提示

linux - 编译错误 - Raspberry Pi 的内核源代码

linux - bash 中的复活节计算产生恒定的结果

arrays - 如何按空行将文本文件拆分为数组?