You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将所有环境变量存入Bash数组?解决空字节报错问题

在Bash中将环境变量存入数组的正确方法

你遇到的问题根源在于命令替换$(...)会自动忽略输入中的空字节,所以env -0输出的空分隔数据经过$(env -0)后就丢失了空字节,导致readarray无法正确分割。

要解决这个问题,直接用进程替换让readarray读取env -0的原始输出,避开命令替换的限制:

readarray -d '' env_vars < <(env -0)

关键说明:

  • env -0:以VAR=VALUE的格式输出所有环境变量,每个条目用空字节分隔,完美适配包含换行、空格等特殊字符的环境变量值。
  • < <(env -0):进程替换,让readarray直接从env -0的输出流读取数据,不会过滤空字节。
  • readarray -d '':指定以空字节作为数组元素的分隔符,这样每个环境变量条目会被正确存入数组的单个元素中。

验证方式:

你可以用下面的命令查看数组内容,确认包含多行的环境变量是否被正确存储:

# 打印数组所有元素,每个元素前加分隔线,即使元素内部有换行也能完整显示
printf '---\n%s\n' "${env_vars[@]}"

内容的提问来源于stack exchange,提问作者sakra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:05:17