引用变量和变量的值(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 & "."
但是, 我们已经设法绕过它们了.
 

java map value值是引用的变量?

今天碰到个奇怪的问题,花了很久终于找到原因。 原来代码类似如下: getFinancalReport tf=new getFinancalReport(); for(int...
  • scjthree
  • scjthree
  • 2016年08月11日 15:47
  • 1290

Nginx的变量机制

在Nginx中同一个请求需要在模块之间数据的传递或者说在配置文件里面使用模块动态的数据一般来说都是使用变量,...
  • weiyuefei
  • weiyuefei
  • 2014年11月22日 15:02
  • 1801

Python中变量引用与赋值

摘要: 1 python中的一切事物皆为对象,并且规定参数的传递都是对象的引用。 2  python参数传递都是“传对象引用”方式。实际上相当于c++中传值和传引用的结合。 3 如果函数收到的是...
  • xiaodashijie
  • xiaodashijie
  • 2014年12月19日 09:39
  • 3512

shell浅谈之一变量和引用

一、简介        变量是脚本语言的核心,shell脚本又是无类型的。变量本质上存储数据的一个或多个计算机内存地址,分为本地变量(用户当前shell生命期使用,随shell进程的消亡而无效,...
  • mao834099514
  • mao834099514
  • 2016年08月26日 11:34
  • 2782

返回一个临时变量的右值引用,那么临时对象什么时候释放?

最近在研究右值引用的时候碰到这个问题,还没有解决,将问题贴在这里,待更新: const int* printAddress(const int & v) { cout ...
  • qq100440110
  • qq100440110
  • 2016年04月23日 13:23
  • 1016

关于变量的定义

先截取一段道长的 变量的作用域  通常情况下,每个变量默认都是局部变量。 一个case里的变量,作用域在这个case内部; 一个userkeyword里的变量,作用域在这个userkeyw...
  • zhouxuan623
  • zhouxuan623
  • 2014年04月23日 15:57
  • 1106

Java变量之间传值- 值传递还是引用传递的讨论

Java变量之间传值时可分为值传递和引用传递, 那么它们有何区别?   1. 简单类型是按值传递的     Java 方法的参数是简单类型的时候,是按值传递的(pass by val...
  • matricer
  • matricer
  • 2016年09月17日 20:01
  • 1666

变量(variables)

less中的变量: 了解css语言的人都知道,在css中,定义的样式(宽度、高度、颜色……)都是固定的,也就是我们所说的常量,但是在less中,我们就可以通过变量来控制样式。变量有以下5种情况和特点...
  • luojingonline
  • luojingonline
  • 2016年12月15日 23:24
  • 152

Python中的变量、引用和作用域

Python中的变量、引用、拷贝和作用域可变对象 & 不可变对象在python中,对象分为两种:可变对象和不可变对象。不可变对象包括int,float,long,str,tuple等,可变对象包括li...
  • github_15549139
  • github_15549139
  • 2015年07月23日 09:32
  • 1751

shell浅谈之一变量和引用

一、简介        简介 二、运行图 (1)如下图1所示。 三、详解 1、开始 (1)开始 四、总结 (1)本博文只发布部分源码,读者可根据思路来进行定制。...
  • taiyang1987912
  • taiyang1987912
  • 2014年08月27日 20:23
  • 22552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:引用变量和变量的值(Referencing Variables and Variable Value)
举报原因:
原因补充:

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