【发布时间】:2026-01-06 23:20:02
【问题描述】:
我正在尝试通过其他一些进程环境来获得特定的环境变量。
所以我一直在尝试类似的 sed 命令:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/\1/p" /proc/pid/environ
但我得到了完整的环境文件作为输出。如果我只用一个静态字符串替换 \1,我会得到那个字符串加上整个环境文件:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/BLAHBLAH/p" /proc/pid/environ
我应该只是在最后一个例子中得到“BLAHBLAH”。如果我摆脱空字符并使用其他一些测试数据集,则不会发生这种情况。
这导致我尝试将 \x00 转换为 \x01,这似乎确实有效:
cat /proc/pid/environ | tr '\000' '\001' | sed -n "s/\x01ENV_VAR_NAME=\([^\x01]*\)\x01/\1/p"
我在这里遗漏了一些关于 sed 的简单内容吗?还是我应该坚持这种解决方法?
【问题讨论】:
标签: linux bash sed environment-variables