变量与类型
$var、数组、哈希表。
25 分钟
变量与类型
PowerShell 变量以 $ 开头,类型在运行时推断。数组 @() 与哈希表 @{} 是脚本中最常用的复合结构——sync-courses.ps1 里 $expected 就是字符串数组。
学习目标
- 声明与赋值
$var、数组、哈希表 - 理解
$null、类型转换与字符串插值 - 读写环境变量(与 Bash
export对照)
核心内容
标量与字符串
$name = "CodeRoadMap"
$port = 8080
"API at http://127.0.0.1:$port/actuator/health"
"count: $($slugs.Count)" # 子表达式插值
单引号 '...' 不插值;双引号 "..." 可嵌入 $var 与 $(...)。
数组与哈希表
$ports = @(8080, 3000, 3306)
$ports -contains 8080 # True
$config = @{
ApiBase = "http://127.0.0.1:8080"
DryRun = $false
}
$config.ApiBase
数组追加:$ports += 443。哈希表键名不区分大小写。
类型与比较
"8080" -eq 8080 # False(类型不同)
"8080" -eq "8080" # True
8080 -gt 3000 # True
[int]$port = "8080" # 显式转换
$items = @() # 空数组
比较运算符:-eq、-ne、-gt、-lt、-in、-notin(不是 == / >)。
环境变量
$env:API_BASE = "http://127.0.0.1:8080"
$env:NODE_ENV = "production"
Remove-Item Env:API_BASE -ErrorAction SilentlyContinue
对应 Bash:export API_BASE=...(linux-shell)。sync-courses.ps1 在 finally 块清理 $env:API_BASE、$env:ADMIN_TOKEN。
只读与作用域
$ErrorActionPreference = "Stop" # 遇错即停
$Root = Resolve-Path "..\.."
脚本级变量在 param() 块定义的参数自动成为变量;函数内用 $script: 或 $global: 前缀访问外层。
练习
- 创建哈希表描述本地部署(ApiBase、AdminUser、端口)
- 用 判断 是否在 track slug 列表中