引用名称包含点的bash变量

时间:2014-10-22 11:36:21

标签: bash

我有一个bash变量:agent1.ip,其中192.168.100.137为其值。当我在echo中引用它时:

echo $agent1.ip

结果是:

.ip

如何访问该值?

更新:我的变量是:

enter image description here

5 个答案:

答案 0 :(得分:13)

Bash本身并不了解带有点的变量名称,但这并不意味着您在环境中不能拥有这样的变量。以下是如何设置并将其全部集中在一起的示例:

env 'agent1.ip=192.168.100.137' bash -c 'env | grep ^agent1\\.ip= | cut -d= -f2-'

答案 1 :(得分:7)

由于bash.ip不是bash中的有效标识符,因此环境字符串bash.ip=192.168.100.37不用于在shell启动时创建shell变量。

我会使用标准工具awk从环境中提取值。

bash_ip=$(awk 'BEGIN {print ENVIRON["bash.ip"]}')

答案 2 :(得分:3)

试试这个:

export myval=`env | grep agent1.port | awk -F'=' '{print $2}'`;echo $myval

答案 3 :(得分:1)

最干净的解决方案是:

echo path.data | awk '{print ENVIRON[$1]}'

答案 4 :(得分:0)

您的代码是否嵌套,并使用使用ksh的函数或脚本?

虚线变量名是ksh93中的高级功能。一个简单的案例是

$ a=1
$ a.b=123
$ echo ${a.b}
123
$ echo $a
1

如果您首先尝试分配到a.b,则会获得

 -ksh: a.b=123: no parent

IHTH

相关问题