bash - Powershell 是否具有与 bash 子 shell 等效的功能?

标签 bash powershell subshell

linux bash shell 中真正伟大的一件事是您可以在子 shell 中定义变量,并且在该子 shell 完成后,其中定义的(环境?)变量就消失了,前提是您在不导出它们的情况下在子 shell 中定义它们。

例如:

$ (set bob=4)
$ echo $bob
$

没有变量存在,所以没有输出。

我最近也在编写一些 powershell 脚本,并注意到我一直不得不在脚本末尾清空我的变量/对象;在 powershell 中使用等效的子 shell 可以解决这个问题。

最佳答案

我以前从未听说过这样的功能,但您可以通过运行如下命令获得相同的效果:

Clear-Host
$x = 3
& {
    $a = 5
    "inner a = $a"
    "inner x = $x"
    $x++
    "inner x increment = $x"
}
"outer a = $a"
"outer x = $x"

输出:

inner a = 5
inner x = 3
inner x increment = 4
outer a = 
outer x = 3

即这使用调用运算符 (&) 来运行脚本 block ({...})。

关于bash - Powershell 是否具有与 bash 子 shell 等效的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50246788/

相关文章:

sql - 如何统计文件被修改为特定日期时间格式的时间

bash - 在 shell 脚本中将换行符 append 到输出文件

linux - 当我尝试只匹配脚本中的最后一次出现时,Sed 不遵守 $ 地址字符

bash - 如何从函数中有效地中止 Bash 脚本的执行

linux - 生成和执行命令的 Bash 脚本

powershell - 在批处理文件中运行 powershell 命令后,图形 CLI 发生了变化

web-services - 使用PowerShell代码访问_vti_bin/lists.asmx

powershell - Powershell:如何将 “ISO” char转换为UTF8?

linux - 管道中的 while 循环对 Solaris/bin/sh 但对 Linux 没有副作用

bash - 为什么 ssh 在没有 -t 的情况下等待我的子 shell,然后用 -t 杀死它们?