0

私は、有効なシェル変数にマップされない名前を持つ環境変数を正常かつ移植可能に (可能な限り) 処理する方法を理解しようとしています。env結果がバイトごとに正確であることが重要であるため、ツールの出力を解析するなどのハックを行うつもりはありません。

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

Some Value上記のコードが;を出力することを願っています。ただし、代わりに空の文字列を返します。

4

1 に答える 1

1

移植できないアプローチの 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"]}"
于 2013-02-04T17:33:00.903 に答える