从 Linux 子 shell 捕获特定的环境变量

Ner*_*ate 1 linux bash shell environment-variables

我试图找出一种方法来从脚本 A 运行 shell 脚本 B,在脚本 B 中设置或导出一个变量,并且能够在脚本 B 完成并且其子 shell 返回后将该值存储在脚本 A 中。

我不是要获取脚本 B。我只想要 1 个特定变量。我可以向脚本 A 添加内容,但我不希望脚本 B 中可能设置的任何变量覆盖脚本 A 中的任何内容,除了我专门尝试捕获的内容。

我确定有一些丑陋的方法,比如将我在 A 中关心的所有变量写出到一个文件,源脚本 B,然后从文件中读回所有内容并恢复 A 中的变量,除了 B 中设置的变量我想要的。我正在寻找一种相对干净和直接的方式,如果存在的话。

Ipo*_*cer 5

将该特定变量写入标准输出,然后在 A 中:

specificvariable=$(/path/to/B.sh)
Run Code Online (Sandbox Code Playgroud)

  • 赞成,但很少注意(主要是考虑到没有经验的用户):(1)它运行`B.sh`,因此您运行整个命令而不是单独的`B.sh`,而不是另外运行。(2) 这将捕获 `B.sh` 的整个输出,因此如果脚本写入的变量超过所需的变量,则无法轻松应用该解决方案。// 如果你愿意,你可以将我的评论作为你自己的答案吸收到答案中(即不提及我的输入);我认为这会使答案更好。 (3认同)