我有一个TARGET变量,可以设置为dev,test或prod.
我定义了以下列表:
dev=(server1 user1 target1)
test=(server2 user2 target2)
prod=(server3 user3 target3)
Run Code Online (Sandbox Code Playgroud)
根据TARGET的值,我想动态地将变量CONFIG关联到列表中的一个.
让我们说TARGET = dev.然后我有
eval CONFIG=\$$TARGET # I expect CONFIG to be a list containing (server1 user1 target1)
echo ${CONFIG[*]} # OK, it gives (server1 user1 target1)
echo ${CONFIG[1]} # I would expect to have "server1" but it returns "1", seems like CONFIG is not seen as a list
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
eval CONFIG=\$$TARGET设置CONFIG为字符串$TARGET.在字符串上下文中展开数组时,结果是数组中值的串联,第一个字符IFS作为分隔符插入.因此在赋值之后,值CONFIG是字符串server1 user1 target1.
您需要指定CONFIG为数组.由于您在zsh中工作,因此无需使用eval获取名称在变量中的变量的值.使用P 参数扩展标志.
CONFIG=(${(P)TARGET})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2526 次 |
| 最近记录: |