我们有一个项目,我们想在 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/