Есть ли у Powershell эквивалент подоболочки bash?

Одна вещь, которая действительно хороша в оболочке linux bash, заключается в том, что вы можете определять переменные внутри подоболочки, и после того, как эта подоболочка завершает работу, переменные (среда?), определенные внутри, просто исчезают, если вы определяете их без их экспорта и внутри подоболочки.

Например:

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

Переменная не существует, поэтому нет вывода.

Я также недавно писал несколько сценариев powershell и заметил, что мне все время приходилось обнулять мои переменные/объекты в конце сценария; использование эквивалента подоболочки в powershell прояснило бы это.


person leeand00    schedule 09.05.2018    source источник


Ответы (1)


Я раньше не слышал о такой функциональности, но вы можете получить тот же эффект, запустив что-то вроде следующего:

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

то есть это использует оператор вызова (&) для запуска блока скрипта ({...}).

person JohnLBevan    schedule 09.05.2018
comment
по какой-то причине кажется, что изменяющиеся каталоги все еще хранятся вне блока :( - person Hashbrown; 05.05.2019