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

翻译 2007年09月20日 22:20:00

 

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

相关文章推荐

CUDA系列学习(二)CUDA memory & variables - different memory and variable types

(一)、CPU Memory 结构CPU提速主要依靠局部性原理,即时间局部性和空间局部性。我们先看一下CPU的内存结构:Data Access先复习一下数据在这几级存储中的传输。作为数据transfe...

php 可变变量 (variable variables)

概要 php的变量声明 可变性体现在哪 避免可变变量歧义问题 可变性意义何在 php变量声明简单的php变量声明如下:...

[Ruby笔记]28.Ruby @@class_variables 类变量 vs @instance_variable 实例变量

@@class_variablesTestCase 想象这样一个场景,一次小班授课,参加的学生有A B C 三人 ,这时候老师开始提问了,我们使用类Student 记录 : 到场的学生名单; 每人...

2.4变动和最终变量(Volatile and Final Variables)

在前面的学习同步锁显示了两个属性:互斥和可见性。同步关键字连接着这两个属性。Java提供一个弱引用的仅仅用于同步可见性。它也连接着一个volatile的关键字。 假设你设计一个机制去停止一个线程(因...

Think Python:Chapter 2:Variables(变量), expressions(表达式) and statements(陈述) 的笔记

这是MIT官方编程教程中Python Tutorial中Types, Values, Expressions; Variables and Binding的内容。本篇博客为《 Think Python...

[从jQuery看JavaScript]-变量与作用域链(Variable and Scope Chain)

转载:http://blog.csdn.net/natineprince/article/details/4775008

MFC中control变量与value变量的区别

转载     control型变量是这个控件所属类的一个实例(对象)可以通过这个变量来对该控件进行一些设置。control型变量可以获得控件的实例,通过这个变量,你可以操纵控件。而val...

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Type

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct...

深入理解PHP原理之变量分离/引用(Variables Separation)

这节我们就接着前面的文章,继续介绍PHP中变量分离和引用的概念:首先我们回顾一下zval的结构:struct _zval_struct {        /* Variable information...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:引用变量和变量的值(Referencing Variables and Variable Value)
举报原因:
原因补充:

(最多只允许输入30个字)