在CentOS 5主机上(使用bash 3.2.32),我们使用Ruby(1.8.7)来实现
ENV['AWS_foo-bar_ACCESS_KEY'] = xxxxx
然后,使用bash,我们运行一个shell脚本:
BUCKET_NAME=$1
AWS_ACCESS_KEY_ID_VAR="AWS_${BUCKET_NAME}_ACCESS_KEY_ID"
AWS_ACCESS_KEY_ID="${!AWS_ACCESS_KEY_ID_VAR}"
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
这在CentOS 5上运行良好.
但是,在CentOS 6上(使用bash 4.1.2),我们得到了错误
-bash: export: `AWS_foo-bar_ACCESS_KEY_ID=xxxxx': not a valid identifier
我们的理解是,这失败了,因为-变量名中不允许这样做.但是为什么这个工作在bash 3.2而不是bash 4.1?