1

我在 windows 上运行 bash(不是 windows 10 上的新奇事物,mingw bash),然后从那里运行shake。据我了解,Windows 上的命令可以编辑cmd. 在我的用例中,我不想对环境将如何更改做出假设,我只想让下一个命令在更改后的环境中运行。那可能吗?

理想的情况是

(Environment env, Stdout out) <- cmd Shell (Cwd dir) "path/to/script.cmd" [arg1] [arg2]
-- Do stuff with out
cmd Shell (Cwd dir) (Env env) "env/dependent/command.cmd"

我也很乐意在同一个 shell 中运行这两个命令,即使这意味着我不能Do stuff with out,但我也不知道该怎么做

我想在makefile术语中我想要的类似于.ONESHELL:

4

1 回答 1

1

Shake 中的每个cmd调用都是独立的,因此任何环境变量都不会持续存在。假设您想将其script.cmd视为黑匣子,有两种选择:

  1. 在一个步骤中运行这两个命令。类似的东西:Stdout out <- cmd Shell (Cwd dir) "path/to/script.cmd" arg1 arg2 "&& env/dependent/command.cmd"
  2. 从第一个命令捕获环境并将其传递给第二个命令。您可以通过运行捕获环境、使用path/to/script.cmd .... && set捕获Stdout、解析它,然后使用Env.

如果您想Env多次重复使用,那么第二次可能会更快,但两者都应该工作。

第二种方法的工作实现,包括set输出解析器,可在此处(@fakedrake)获得。

于 2016-05-05T14:32:16.327 回答