如何在终端上链接 2 个命令

how to chain 2 commands on terminal

我正在尝试在我的 python 脚本中使用子进程来打开 Julia,然后 运行 一个脚本。

在我的机器上 运行,我在终端中输入:

$ julia
$ include(test.jl); func("in.csv", "out.csv")

我如何复制这个过程并链接这两个命令,以便我可以 运行 从子过程中一次调用?

我试过julia; include(test.jl); func("in.csv", "out.csv")julia && include(test.jl) && func("in.csv", "out.csv")

但两者都会导致

-bash: syntax error near unexpected token `"test.jl"`

这里的关键是,您并没有真正从 Python 的 subprocess 的角度链接两个命令。只有 一个 命令:julia。您想要将一个有点复杂的 argument 传递给 Julia,它将执行多个 Julia 表达式。

简而言之,你只想做:

subprocess.run(['julia','-e','include("test.jl"); func("in.csv", "out.csv")'])

这里发生的事情是你只是在执行 一个 子进程,julia,以 -e 命令行标志启动,它可以运行任何接下来是朱莉娅。您可以选择使用大写的 -E 标志来代替,它将打印出任何 func (您在那里的最后一个表达式) returns.

不过,值得指出的是,are better ways 让 Julia 和 Python 互操作——尤其是当您需要来回传输数据时。