bash - 是否可以将变量从 BASH 脚本传递到 Linux 上的 PWSH

标签 bash powershell variables

我们有一个项目,我们想在 Linux 上运行一些 Bash 和 Powershell 脚本。我们将使用 BASH 脚本来运行一些具有各种变量的进程,执行 powershell 脚本,然后完成更多的 BASH 命令。

如果我们在 bash 脚本中设置了变量,然后在同一个 BASH session 中执行 powershell 脚本,是否有办法将这些变量传递给 Powershell?

最佳答案

您可以通过环境变量传递值,这让 Bash(和一般的 POSIX 兼容的 shell)变得简单:

$ foo='BAR'; bar='BAZ' # define sample Bash shell vars.
$ foo="$foo" bar="$bar" pwsh -noprofile -command '$env:foo; $env:bar'
BAR
BAZ

注意 foo="$foo"bar="$bar" 如何定义 shell 变量 $foo$bar 作为 process-scoped 环境变量 用于 pwsh 调用。
也就是说,这些环境变量只对 pwsh 子进程有效。

备选方案:

  • 您可以事先单独定义环境变量 - 例如,
    export foo='BAR',但请注意,这些变量在当前进程的生命周期内保持有效bash 脚本运行(除非您稍后取消定义它们)。

  • 要在您的 bash 脚本环境变量中自动生成所有变量(同样在当前进程的生命周期内),您可以在创建常规 shell 变量之前放置一个 set -a 语句。然后,foo='BAR' 等常规赋值会自动创建 foo 作为 PowerShell 可以作为 $env:foo 访问的环境变量。

关于bash - 是否可以将变量从 BASH 脚本传递到 Linux 上的 PWSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53663356/

相关文章:

python - 当我在 Python 中实例化类时会发生什么?

php - 访问函数返回的数组

linux - bash 脚本中的多线程

regex - 如何使用 sed(或类似工具)删除两个 html 标签之间的所有行?

powershell - 如何在 powershell 的 UNC 路径中使用变量?

powershell - 使用PowerShell从zip文件提取目录的最优雅方法?

arrays - 比较数组的 2 个字符串元素

linux - 在 bash 中退出 while 循环时丢失变量值

sql-server - 将比较对象结果添加到差异数据集

delphi - 与其他语言相比,Delphi 是否更有可能重用临时变量?