您的位置:首页 > 产品设计 > UI/UE

引用变量和变量的值(Referencing Variables and Variable Value)

2007-09-20 22:20 495 查看
[align=left]如下翻译来自微软TechNet脚本中心: http://www.microsoft.com/technet/scriptcenter/resources/pstips/jun07/pstip0615.mspx [/align]
译者: Edengundam(马涛)

[align=left]Referencing Variables and Variable Values[/align]
[align=left]当你编写脚本时, 特别是系统管理脚本, 你基本上不可能提早的将你是用的值硬编码进去; 取而代之的是, 你通常将取得的信息存储在一个或多个变量中, 然后显示这些变量的值. 例如, 你可能有一个简单的VBScript脚本, 向下面示例代码一样从活动目录中获取数据:[/align]
[align=left]strFirstName = objUser.givenName[/align]
[align=left]strLastName = objUser.sn[/align]
[align=left]strTitle = objUser.title[/align]
[align=left]strDepartment = objUser.department[/align]
[align=left]一旦你获得了这些数据, 你倾向于回显一个更加漂亮的句子, 例如:[/align]
[align=left]"Ken Myer is an Accountant in Financial Services."[/align]
[align=left]这太简单了, 是不是? 恩, 也许吧. 然而, 在VBScript中组合文本和变量值至少是需要一些技巧的. 例如, 要显示上面的信息, 你需要照着这样来编写代码:[/align]
[align=left]Wscript.Echo strFirstName & " " & strLastName & " is an " & strTitle & " in " & strDepartment & "."[/align]
[align=left]这种代码不是不可能的, 但是却非常的麻烦, 而且很容易就会犯向丢掉一个空格的错误. 结果就是, 那些微不足道的错误就会导致看起来非常不专业的输出, 输出结果类似于:[/align]
[align=left]"Ken Myer is anAccountant inFinancial Services."[/align]
[align=left]但是你究竟打算做什么啊? 毕竟它不能直接的将变量嵌入到字符串中. 不管你是否真的喜欢, 所有的&和双引号都是无法更改的不幸事实而已.[/align]
[align=left]恩, 除非你正在使用Windows PowerShell, 它可以做到. [/align]
[align=left]Windows PowerShell中显示变量的值[/align]
[align=left]在Windows PowerShell你能够在字符串中嵌入变量, 而后PowerShell将会显示该变量的值. 什么意思啊? 恩, 来思考下这个简单的PowerShell脚本, 对四个不同的变量赋值, 然后使用Write-Host cmdlet会先包含着所有变量的字符串:[/align]
[align=left]$FirstName = "Ken"[/align]
[align=left]$LastName = "Myer"[/align]
[align=left]$Title = "Accountant"[/align]
[align=left]$Department = "Financial Services"[/align]
[align=left] [/align]
[align=left]Write-Host "$FirstName $LastName is an $Title in $Department."[/align]
[align=left]现在, 你设想的屏幕实际显示结果究竟是什么样子呢? 不管你是否相信, 这个就是屏幕输出的结果:[/align]
[align=left]Ken Myer is an Accountant in Financial Services.[/align]
[align=left]没有&, 没有双引号, 不需要担心添加额外的空格: 只需要将变量放置在字符串中, PowerShell将会回显变量的值.[/align]
[align=left]这是多么的简单与清晰, 真是革命性的进步. (译注: 汗, 这个老外好幽默, 这个技术在古老的Unix sh中就支持了...)[/align]
[align=left]现在, 必须要承认的是, 总会有某些时候你不希望变量的值被显示在屏幕上. 例如, 假设你希望显示在屏幕的是这个:[/align]
[align=left]$FirstName $LastName is an $Title in $Department.[/align]
[align=left]很奇怪吧, 但是你想输出到屏幕的信息与我们可是什么关系都没有的.[/align]
[align=left]如果PowerShell自动的将变量替换为值, 你该如何去完成它呢? 其实非常简单; 你只需要将字符串用单引号括起来:[/align]
[align=left]Write-Host '$FirstName $LastName is an $Title in $Department.'[/align]
[align=left]单引号将导致字面值直接被输出; 双引号将会导致变量的实际值被输出.[/align]
[align=left]我们再来一个例子. 正如你所知道的, PowerShell包含了一些“automatic”变量, 用来返回一些关于PowerShell和PowerShell环境的信息; 例如, 变量$pshome将会返回Windows PowerShell安装的目录名称. 假设我们有下面一行代码 (这是一行怪异的代码, 但是请您饶了我们吧)(译注: 作者这里只是为了展示例子, 而构造了不太合适的例子, 因此玩笑似的希望读者见谅):[/align]
[align=left]Write-Host "$pshome"[/align]
[align=left]这样将会返回变量$pshome的值; 也就是PowerShell安装到的目录名称:[/align]
[align=left]C:/WINDOWS/system32/WindowsPowerShell/v1.0[/align]
[align=left]现在假设我们有这样一行代码:[/align]
[align=left]Write-Host '$pshome'[/align]
[align=left]我们必须感谢单引号, 它使得输出的结果为字面值(literal):[/align]
[align=left]$pshome[/align]
[align=left]其实并不用我们说, 这些太棒了. 但是如果我们想输出如下的信息呢:[/align]
[align=left]The value of the $pshome variable is C:/WINDOWS/system32/WindowsPowerShell/v1.0.[/align]
[align=left]我们究竟该如何完成它? 我们该如何既输出字面值也输出变量的实际值, 还可以在一句中完成?[/align]
[align=left]这个就是啦:[/align]
[align=left]Write-Host "The value of the `$pshome variable is $pshome."[/align]
[align=left]看到这里我们是如何做的了吧? 我们将整个字符串用双引号括起来; 因此, 你一定期待着PowerShell将会输出实例$pshome的值. 但是请注意那个有点滑稽的字符(就是“重音符号”)我们将它放置在第一个$pshome实例的前面:[/align]
[align=left]`$pshome[/align]
[align=left]这就是秘密所在了哦: 在变量前使用一个重音符号, PowerShell将会显示变量的名称($pshome)而不是该变量的值. 就像我们这里所做的一样, 即使将整个字符串放在双引号中这个规则也是成立的.[/align]
[align=left]换句话说, 在PowerShell中, 组合变量和其他文本是非常容易的: 只需要将变量嵌入到字符串中, 默认情况下PowerShell就会显示该变量的值. 不可否认的, 我们将会错过&, 双引号, 和类似这样的怪异结果:[/align]
[align=left]Wscript.Echo strLastName & ", " & strFirstName & " " & strInitials & "."[/align]
[align=left]但是, 我们已经设法绕过它们了.[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐