我们正在使用弹性豆茎。某些值是环境的环境属性。当我执行container_command
我能够将此属性作为环境变量读取时。问题如下:许多属性的命名方式如此db:user
或collector:server
以及之后的值。
如何阅读此值?我可以将它们解释为环境变量。所以具有“正常”的环境属性'我能读的名字。但不是那些包含':'在他们的名字中:
要测试(+让那些不了解弹性豆茎的人更清楚)我已经创造了这个。全局目标是读取包含':'的变量的值。以它的名字。
#!/bin/bash
${myvar:test}="hey"
echo ${myvar:test}
$./test.sh
$./test.sh: line 3: =hey: command not found
答案 0 :(得分:0)
:
根本不是shell变量中的允许字符,而${test:foo}
具有完全独立的含义(它会将$test
扩展为默认值{{1}如果没有定义名为foo
的变量。)
但是,如果您的操作系统是Linux,则可以直接从procfs解析原始环境变量:
test
请注意,要对此进行测试,您需要能够使用文字冒号实际创建环境变量,并且您的代码目前无法执行此操作。请考虑一下:
#!/usr/bin/env bash
declare -A env=( ) ## <- note that this requires bash 4.0 or newer
while IFS= read -r -d '' envvar; do
[[ $envvar = *:* ]] || continue
varname=${envvar%%=*}
value=${envvar#*=}
env[$varname]=$value
done < /proc/self/environ
echo "The value of the environment variable db:user is: <<${env[db:user]}>>"