我想运行由 Python 脚本生成的一系列 bash 命令。命令的格式为export foo="bar"
和alias foo=bar
。他们必须修改当前进程的环境。
这很好用:
$(./generate_commands.py)
直到导出命令包含空格,例如export x="a b"
. 这会产生一个错误,并且只会"a
被导出(包括引号)。
目前我正在通过将 generate_commands 输出到一个临时文件并获取它来解决这个问题,但是有没有更优雅的解决方案?
我想运行由 Python 脚本生成的一系列 bash 命令。命令的格式为export foo="bar"
和alias foo=bar
。他们必须修改当前进程的环境。
这很好用:
$(./generate_commands.py)
直到导出命令包含空格,例如export x="a b"
. 这会产生一个错误,并且只会"a
被导出(包括引号)。
目前我正在通过将 generate_commands 输出到一个临时文件并获取它来解决这个问题,但是有没有更优雅的解决方案?
./generate_commands | bash
这会将脚本的输出作为输入传递给bash
编辑:
为了让变量在当前 shell 中可见,您需要获取输出:
source <(./generate_commands)
或者
. <(./generate_commands)
我认为OP的问题是
cmd="export x=\"a b\""
${cmd}
不起作用,但是
export x="a b"
作品。我的解决方法是
export x="a"
echo $x
x+=" b"
echo $x