我想运行由 Python 脚本生成的一系列 bash 命令。命令的形式为export foo="bar"和alias foo=bar。他们必须修改当前进程的环境。
这很好用:
$(./generate_commands.py)
Run Code Online (Sandbox Code Playgroud)
直到导出命令包含空格,例如export x="a b"。这会生成错误,并且仅"a被导出(包括引号)。
目前我正在通过将generate_commands输出到临时文件并获取它来解决这个问题,但是有没有更优雅的解决方案?
./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)