执行csv文件中的命令(bash / Mac)

时间:2017-10-16 16:21:36

标签: bash macos csv

我有一个csv文件,其中包含命令行中的一堆命令。我只能bash这个csv文件,但命令将在同一个终端中顺序执行。有没有办法在一个单独的终端中执行这些命令中的每一个,以便它们并行执行?

示例:

就像:

python args1
python args2
...
python argsn

3 个答案:

答案 0 :(得分:2)

你基本上只有一个shell脚本。唯一的区别是,不是将其作为一个脚本运行,而是希望将每一行作为单独的命令运行。如何打开一个新终端有点依赖于操作系统,但我们假设您只使用xterm命令。以下内容将您的脚本commands.csv(或其命名的任何内容)视为数据文件。

while IFS= read -r cmdline; do
    xterm -e sh -c "$cmdline" &
done < commands.csv

答案 1 :(得分:2)

如果您想在Mac上进行任何严肃的软件开发,我建议您安装自制软件,因为Apple不提供软件包管理器,但是大多数人都会提供所有工具的古老版本使用... Python,sed,PHP,Perl,awk,find,grep,make,git ......

一旦你有自制,我会推荐你​​可以安装的 GNU Parallel

brew install parallel

一旦你有 GNU Parallel ,你就可以并行执行命令:

parallel --dry-run -a commands.csv

或许,您可能希望用他们的名字标记这些行:

parallel --tag -a commands.csv

如果您希望一次运行8,请添加-j 8。如果您想要一个预计到达时间(何时应该完成),请添加--eta等等。

顺便说一句,您可以通过以下方式寻找其他工具,例如英特尔TBB:

brew search tbb

或pango,附:

brew search pango

答案 2 :(得分:-1)

您可以在后台运行命令,如

run-command &
run-some-other-command &
etc &

是你可以使用的东西吗?