Text ${Alias} Text
Text ${/d:Alias} Text
Text ${/f:Alias} Text
Text ${/n:Alias} Text
Text ${/v:Alias} Text
Alias 指定要展开和求值的别名名称。
Alias 必须是用户命名的别名或者
.foreach关键字中使用的
变量值
/d
根据别名当前是否已经定义计算出1或者0。如果别名已经定义,${/d:Alias} 被替换为 1;如果别名没有定义,${/d:Alias} 被替换为 0
0:000> al
Alias Value
------- -------
$str Tencent Technology(Shenzhen) Company Limited
0:000> r $t0=${/d:$str}
0:000> r $t0
$t0=00000001
0:000> ad $str
0:000> al
No aliases
0:000> r $t0=${/d:$str}
0:000> r $t0
$t0=00000000
可以看到,$str存在时${/d:$str}为1,否则为0
如果别名当前已定义则等同于计算别名。如果别名已经定义,${/f:Alias} 被替换为等价的别名;如果别名没有定义,${/f:Alias}被替换为空字符串
0:000> al
Alias Value
------- -------
$add +
0:000> ? 1 $add 2
Evaluate expression: 3 = 00000003
0:000> ? 1 ${/f:$add} 2
Evaluate expression: 3 = 00000003
0:000> ad $add
0:000> al
No aliases
0:000> ? 1 ${/f:$add} 2
Evaluate expression: 1 = 00000001
^ Extra character error in '? 1 2'
/n
如果别名当前已定义则计算别名的名称。如果别名已经定义,${/n:Alias}被替换为别名名称;如果别名没有定义,${/n:Alias}保留它字面上的值不替换
0:000> eza 0019e8b4 "${/n:$add}"
0:000> da 0019e8b4
0019e8b4 "$add"
0:000> ad $add
0:000> al
No aliases
0:000> eza 0019e8b4 "${/n:$add}"
0:000> da 0019e8b4
0019e8b4 "${/n:$add}"
可以看出,如果定义了别名,"${/n:$add}"被直接替换成$add,否则不变.
/v
禁止对任何别名求值。不论别名是否已经定义,${/v:Alias} 总是保持它字面上的值
0:000> as $add +
0:000> eza 0019e8b4 "${/v:$add}"
0:000> da 0019e8b4
0019e8b4 "${/v:$add}"
有一个例外。如果你使用 ${/v:Alias}作为as (Set Alias)或者aS (Set Alias)命令的第一个参数,该关键字被当成单独的 Alias 字符串,而不是 ${/v:Alias}字符串。这只是对 as、aS 和 ad 命令起作用
0:000> ad*
0:000> al
No aliases
0:000> as ${/v:$add} +
0:000> al
Alias Value
------- -------
$add +
0:000> ad ${/v:$add}
0:000> al
No aliases
如果没有使用开关选项且别名当前已定义,${ Alias} 被替换为等价的别名。如果没有使用开关选项且别名没有定义,${ Alias}总是保持它字面上的值
使用 ${ } 记号的一个优点是,如果和其它字符紧挨着也会对别名求值。没有这个记号,调试器只对那些和其它关键字隔开的别名求值
0:000> eza 0019e8b4 "ab${/n:$add}"
0:000> da 0019e8b4
0019e8b4 "ab$add"