gpt4 book ai didi

bash - 如何将 env 输出为可运行的 shell 脚本

转载 作者:行者123 更新时间:2023-11-29 08:54:44 25 4
gpt4 key购买 nike

您可以简单地将您的环境输出为可运行的 shell 脚本,使用

env > my_env

...稍后在另一个脚本中...

set -a
source my_env

这适用于最简单的情况,但如果环境中有任何特殊字符或空格,则会失败。

我怎样才能修复上面的脚本,以便它可以处理 a='"'"'" 之类的东西?

最佳答案

以下使用 bash 的 printf %q 正确转义值,而不管它们的内容。它保证可以处理任何可能的值——引号、换行符等——只要获取其输出的 shell 是 bash,并且只要使用的操作系统支持 /proc/self/environ 工具首先由 Linux 提供,用于将环境内容作为 NUL 分隔的流发出。它在适当的地方使用特殊的引用形式,例如 $'\n',因此它的输出可能不会被纯 POSIX 解释器接受。

#!/usr/bin/env bash
while IFS= read -r -d '' kvname; do
k=${kvname%%=*}
v=${kvname#*=}
printf '%q=%q\n' "$k" "$v"
done </proc/self/environ

请注意,如果您希望更改当前 shell 的环境,您将希望获取 输出,而不是将其作为外部可执行文件运行。如果您不想在采购之前 set -a,请将前导 export 添加到格式字符串。

关于bash - 如何将 env 输出为可运行的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com