访问未映射到有效shell变量名称的环境变量

时间:2013-02-04 17:33:01

标签: bash

我正试图弄清楚如何理智和可移植(尽可能)处理名称不映射到有效shell变量的环境变量。结果必须逐字节准确,因此我不愿意解决诸如解析env工具输出之类的问题。

env 'Invalid Name=Some Value' bash <<'EOF'
s='Invalid Name'
printf '%q\n' "${!s}"
EOF

我希望上面的代码会发出Some Value;相反,它会返回一个空字符串。

1 个答案:

答案 0 :(得分:1)

一种不可移植的方法(仅限Linux)是解析/proc/self/environ

declare -A environ
while IFS='' read -r -d ''; do
  var=${REPLY%%=*}
  val=${REPLY#*=}
  environ[$var]="$val"
done </proc/self/environ
printf '%q\n' "${environ["Invalid Name"]}"