我有一个bash变量:agent1.ip
,其中192.168.100.137
为其值。当我在echo
中引用它时:
echo $agent1.ip
结果是:
.ip
如何访问该值?
更新:我的变量是:
答案 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