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