Символ $ (доллар) достаточно часто применяется в PowerShell. В сегодняшней заметке мы рассмотрим некоторые известные и не очень варианты его использования.
$ (доллар) — применяется для обозначения переменных, например:
$a = ″Hello, world″
$$ (двойной доллар) — возвращает окончание последней выполненной команды, а $^ (доллар и крышка) — начало последней выполненной команды. В качестве примера выполним команду:
Write-Host $a
Теперь если набрать $^, то получим первую часть предыдущей команды (Write-Host), а команда $$ выдаст вторую ее часть ($a).
$_ (доллар и нижнее подчеркивание) — применяется для передачи значения при использовании конвейера. Специальная переменная $_ принимает текущее значение каждого объекта, переданного по конвейеру. Например следующая команда просто выводит по очереди все значения:
′one′, ′two′, ′three′ | foreach {Write-Host $_}
А такой командой мы отсортируем и выведем на экран запущенные на компьютере процессы с Id меньше 100:
Get-Process | where {$_.Id -le 100}
$? (доллар и знак вопроса) — встроенная переменная, хранящая статус выполнения предыдущей команды. Возвращает True если команда была выполнена успешно и False — если с ошибкой.
$() (доллар и круглые скобки) — применяется для выделения подвыражения в строке при использовании двойных кавычек. В этом случае выражение в скобках обрабатывается в первую очередь, например:
$a = 3
$b = 2
″The sum is $($a + $b)″
И еще пример:
$process = Get-Process
″There are $($process.Length) process running in my PC″
${} (доллар и фигурные скобки) — позволяет использовать в имени переменной нестандартные символы. Например:
${@,&#$>?=*} = ″Hello, world″
Еще одна особенность этой конструкции в том, что если в имени присутствует двоеточие (:), то оно интерпретируется как путь. Например, если в качестве имени переменной указать путь к файлу файл, то значение будет записано прямо в этот файл:
${C:\Files\file.txt} = ″Hello, world″
Ну, пожалуй все, больше вариантов использования $ я не нашел. Пишите, если знаете еще какие нибудь нестандартные варианты.
Спасибо!