在bash中执行生成的命令

时间:2013-05-02 15:26:09

标签: bash

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

这很有效:

$(./generate_commands.py)

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

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

2 个答案:

答案 0 :(得分:4)

./generate_commands | bash

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

编辑:

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

source <(./generate_commands)

. <(./generate_commands)

答案 1 :(得分:0)

我认为OP的问题是

cmd="export x=\"a b\""
${cmd}

不起作用,但

export x="a b"

的工作原理。我的方法是

export x="a"
echo $x
x+=" b"
echo $x