在 bash 中执行生成的命令

Mic*_*ngs 2 bash

我想运行由 Python 脚本生成的一系列 bash 命令。命令的形式为export foo="bar"alias foo=bar。他们必须修改当前进程的环境。

这很好用:

$(./generate_commands.py)
Run Code Online (Sandbox Code Playgroud)

直到导出命令包含空格,例如export x="a b"。这会生成错误,并且仅"a被导出(包括引号)。

目前我正在通过将generate_commands输出到临时文件并获取它来解决这个问题,但是有没有更优雅的解决方案?

Ale*_*lex 5

./generate_commands | bash
Run Code Online (Sandbox Code Playgroud)

这会将脚本的输出作为输入传输到bash

编辑:

为了允许变量在当前 shell 中可见,您需要获取输出:

source <(./generate_commands)
Run Code Online (Sandbox Code Playgroud)

或者

. <(./generate_commands)
Run Code Online (Sandbox Code Playgroud)