Powershell中的变量

在我们的迷你系列“Variables in Shells”中,了解如何在PowerShell中处理局部变量。

图片来源:Opensource.com

在计算机科学(和休闲计算)中,变量是内存中的位置,用于保存任意信息以供以后使用。换句话说,这是一个临时存储容器,你可以将数据放入或取出数据。在Bash shell中,该数据可以是单词(计算机语言中的字符串)或数字(整数)。

也许你以前从未(有意地)在计算机上使用过变量,但你可能在生活的另一个领域中使用过变量。当你说“给我那个”或“看看这个”之类的字眼时,你使用的是语法变量(你将它们视为代词)。 “ this”和“ that”的含义取决于你在脑海中所描绘的内容,或者是指你想作为受众了解你所指的指标的任何内容。在进行数学运算时,即使你可能不将变量称为变量,也可以使用变量来代表未知值。

本文介绍在Windows,Linux或Mac上运行的PowerShell中的变量。开源Bash Shell的用户可参考我有关Bash Shell中变量的文章(尽管你可以在Linux上运行PowerShell,并且它是开源的,因此你仍然可以继续阅读本文)。

注意:本文中的示例来自在开源操作系统Linux上运行的PowerShell会话,因此,如果你使用的是Windows或Mac,文件路径会有所不同。但是,Windows会自动将“/”转换为“\”,并且所有示例都可以在所有平台上运行,只要你替换明显的差异(例如,从统计角度上讲,你的用户名不太可能设置为seth)。

变量是为了什么?

在PowerShell中是否需要变量取决于你在终端中执行的操作。 对于某些用户而言,变量是管理数据的基本手段,而对于另一些用户而言,它们是次要的和暂时的便利,或者对于某些用户而言,它们也可能不存在。

最终,变量是一种工具。 可以在发现它们的用途时使用它们,也可以放心地知道它们是由你的操作系统管理的。 但是,知识就是力量,而了解变量在Bash中的工作方式可以使你获得各种意想不到的创造性问题解决方案。

设置变量

你不需要特殊权限即可创建变量。 它们可免费创建,免费使用且通常无害。 在PowerShell中,可以通过定义变量名称,然后使用Set-Variable命令设置其值来创建变量。 下面的示例创建一个名为“FOO”的新变量,并将其值设置为字符串$ HOME / Documents:什么是变量?

操作成功是无言的,因此你可能不确定变量是否已被设置。 可以使用Get-Variable(简称gv)命令自己查看结果。 为了确保完全按照定义定义读取变量,也可以将其用引号引起来。 这样做会保留可能出现在变量中的所有特殊字符。 在此示例中,这并不适用,但这仍然是值得养成的好习惯:

请注意,FOO的内容与你设置的不是完全一致的。 你为变量设置的文字字符串为“$ HOME / Documents”,但现在显示为“/ home / seth / Documents”。 发生这种情况是因为您可以嵌套变量。 $ HOME变量指向当前用户的主目录,无论该目录位于Windows的C:\ Users,Linux的/ home或Mac的/ Users中。 由于$ HOME嵌入在FOO中,因此该变量在调用时会扩展。 通过这种方式使用默认变量可以帮助你编写可跨平台运行的可移植脚本。

变量通常用于将信息从一个系统传递到另一个系统。 在这个简单的示例中,你的变量不是很有用,但是它仍然可以传达信息。 例如,由于FOO变量的内容是文件路径,因此可以将FOO用作指向其值引用的目录的快捷方式。

要引用变量FOO的内容而不是变量本身,请在变量前加一个美元符号“$”:

清除变量

你可以使用Remove-Variable命令删除变量:

实际上,通常不需要删除变量。 变量相对“cheap”,因此可以创建它们,而在不再需要它们时就将其忘记。 但是,有时你可能想要确保变量为空,以避免将不需要的信息传递给可能读取该变量的另一个进程。

创建具有碰撞保护(collision protection)功能的新变量

有时,可能有理由相信你或其他进程已经设置了变量。 如果你不想覆盖它,则可以使用New-Variable,在已经存在相同名称的变量时它被设计为失败,或者可以使用条件语句首先检查变量:

注意:在这些示例中,假定FOO设置为“/ home / seth / Documents”。

或者,你可以构造一个简单的if语句来检查现有变量:

添加到变量

可以覆盖现有变量,而不用覆盖变量。 在PowerShell中,变量具有多种类型,包括字符串,整数和数组。 选择创建一个实质上具有多个值的变量时,必须确定是否需要用字符分隔的字符串数组。 你可能不在乎任何一种方式,但是接收变量数据的应用程序可能会期望其中一种方式,因此请根据目标进行选择。

要将数据附加到字符串变量,请使用“+ =”语法:

数组是PowerShell中的特殊类型的变量,需要ArrayList对象。 这超出了本文的范围,因为它需要更深入地研究PowerShell的.NET内部。

通过环境变量进入全局

到目前为止,本文中创建的变量都是本地变量,这意味着它们仅适用于你在其中创建的PowerShell会话。要创建其他进程可以访问的变量,可以创建环境变量,这将在以后的文章中介绍。

原文链接:https://opensource.com/article/19/8/variables-powershell

原文作者:Seth Kenlon(Red Hat)

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux tac命令入门【Linux-Command line】

    tac命令本质上是cat命令,但其目的是反向连接文件。 像cat一样,如果没有提供输出文件,它也具有方便的后备模式,可打印到标准输出(STDOUT),使其成为比...

    QRosie
  • 在命令行进行sort排序【Linux-Command line】

    使用sort命令重组数据,可以从Linux,BSD或Mac终端以对你有意义的格式进行。

    QRosie
  • 9个基本的GNU binutils 工具【Linux-Command-line】

    想象一下,尽管无法访问软件的源代码,但仍然能够理解软件的实现方式,在其中找到漏洞,并且(更好的是)修复了错误。 凡此种种都源于二进制形式。 听起来像是拥有超能力...

    QRosie
  • 一文读懂R中的探索性数据分析

    探索性数据分析(EDA)是数据项目的第一步。我们将创建一个代码模板来实现这一功能。 简介 EDA由单变量(1个变量)和双变量(2个变量)分析组成。

    1480
  • VBA程序的变量和常量

    大家好,在本节就主要介绍变量和常量,主要掌握声明变量和变量赋值,变量的作用域和存活期需要理解。

    无言之月
  • 机器学习实战 | 数据探索(变量变换、生成)

    1.1、什么是变量变换? 在数据建模中,变换是指通过函数替换变量。 例如,通过平方/立方根或对数x替换变量x是一个变换。 换句话说,变换是一个改变变量与其他变量...

    用户1332428
  • C - 基础总结

    xx_Cc
  • 数据管理—reshape2包

    我就在这里等你关注,不离不弃 ——A·May R-50T-50 ? 「序 言 」 不知不觉,已经写了半百的R语言了,感觉等数据准备这个大阶段结束,有必要将数据理...

    企鹅号小编
  • SAS-Macro 中的那些语句(二)

    昨天哪一篇说了宏变量定义的三种方式(SAS-Macro 中的那些语句(一)),今天接着昨天的说...还是围绕着宏变量进行展开,第一个问题,宏变量的作用域有限制么...

    Setup
  • 浅析互信息与特征选择

    那么什么是互信息呢?变量x与变量y之间的互信息,可以用来衡量已知变量x时变量y的不确定性减少的程度,同样的,也可以衡量已知变量y时变量x的不确定性减少的程度。

    用户1908973

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动