内工作。如果我有一个简单的bash脚本set_token.sh
:EVAL命令不循环
#!/bin/bash
output='export AWS_ACCESS_KEY_ID="111"
export AWS_SECRET_ACCESS_KEY="222"
export AWS_SESSION_TOKEN="333"'
echo "$output" | while read line; do eval $line; done
执行的set_token.sh
没有成功设置3个的环境变量。但是,如果我分别在每行上运行eval,它就可以工作。
$ eval 'export AWS_ACCESS_KEY_ID="111"'
$ eval 'export AWS_SECRET_ACCESS_KEY="222"'
$ eval 'export AWS_SESSION_TOKEN="333"'
这是为什么?
您在管道中设置子shell环境中的变量;见[BashFAQ 24](http://mywiki.wooledge.org/BashFAQ/024)。 –
@Tony Vu:你打算让我们明确你的要求吗?你的问题解决了还是卡住了? – Inian
修复[BashFAQ#24](http://mywiki.wooledge.org/BashFAQ/024)后,执行脚本将设置三个变量...并退出,新分配的变量随着死亡而消失它们被设置的shell。export一个变量修改* child *进程的环境,而不是父进程。 –