Syntax powershell中括号还有其他用途吗?

Syntax powershell中括号还有其他用途吗?,syntax,powershell,language-construct,Syntax,Powershell,Language Construct,作为Powershell世界的新手,有时我会陷入棘手的语法中。这就是为什么我试图找出括号在语言中的所有可能用法 你知道更多吗?您可以在这里添加吗? 这里是我的(省略了curly在管道中和round在方法调用中的基本用法): 使语句在表达式中产生结果: ($x=3) + 5 # yields 8 Param()语句(在函数、脚本或脚本块中) 在If(或Elseif语句)中围绕条件 围绕switch语句中的表达式 编辑:忘记while语句中的条件 Edit2:另外,$()表示子表达式(例如,在

作为Powershell世界的新手,有时我会陷入棘手的语法中。这就是为什么我试图找出括号在语言中的所有可能用法

你知道更多吗?您可以在这里添加吗?

这里是我的(省略了curly在管道中和round在方法调用中的基本用法):


使语句在表达式中产生结果:

($x=3) + 5   # yields 8
Param()语句(在函数、脚本或脚本块中)

在If(或Elseif语句)中围绕条件

围绕switch语句中的表达式

编辑:忘记while语句中的条件


Edit2:另外,$()表示子表达式(例如,在字符串中)。

使用泛型时,需要将类型包装在
[…]
中:

New-Object Collections.Generic.LinkedList[string]

对于某些人来说,这可能会让人困惑,因为它类似于数组中的索引。

正则表达式可以说是Powershell中的一流构造

如果我们要编译一个完整的列表,我们可以包括方括号和圆括号在正则表达式中所起的作用

例如:

$obj.connectionString = $obj.connectionString -replace '(Data Source)=[^;]+', '$1=serverB\SQL2008_R2'
由于对XML的支持,您甚至可以包括XPath中使用的方括号。(这真的是一个长长的鞠躬:-)


它甚至写了,但在“我将添加字符串中的多语句表达式”之后的第一个短列表中不够清楚

# Var property inside a string
$a = get-process a*
write-host "Number of process : $a.length" # Get a list of process and then ".length
Number of process : System.Diagnostics.Process (accelerometerST) System.Diagnostics.Process (AEADISRV) System.Diagnostics.Process (agr64svc).length

write-host "Number of process : $($a.length)" # To get correct number of process
Number of process : 3

括号最有力

假设您希望收集某个脚本块的所有输出(包括错误),并重定向到一个变量或另一个函数以处理此问题…使用括号,这是一项简单的任务:

$customScript = {  "This i as test"; This will be procedure error!  }

(. $customScript 2>&1 ) | %{"CAPTURING SCRIPT OUTPUT: "+$_}

只有圆括号(
()
)或大括号(
{}
)吗?括号(
[]
)怎么样?是的,大括号和大括号也是…对不起,我的英语不好。反正大括号不是花括号(也不是圆括号)?:)哇。别以为我永远也不会用它,反正这很棘手!真的没法抓住第一句话。不应该是
($x=3)+5
?的确,很抱歉。缺少了一个
$
。这就是你写C时得到的结果(瞬间:-)这是一种奇怪的行为,但它解释了我今天看到的一些奇怪现象。顺便说一句,你的第二个用法只是带有特殊字符的变量。@jasonmarcher-实际上,他的第二个用法根本不是关于变量的。这是一个间接用法ion相当于获取内容,但这正是它对变量驱动器的工作方式。$foo相当于${variable:foo}。将“variable:”视为powershell中的默认提供程序。关于Param、if、switch和while,您是true,但它们被适当地忽略了(foreach和for也是如此)。您最后一次提出的建议已经在我的列表中。无论如何,谢谢您的回答。子表达式不在列表中。可能是我遗漏了什么……您不是指以下内容:
“进程:$($p=“a*”;get process$p)
,这确实是一个子表达式,并且在我的列表中。但是类型总是在
[]
中给出的,例如,对于强制转换/转换。由于正则表达式总是以字符串形式给出,因此它们不是PowerShell语法的一部分。这也使得它们绝对不是一流的构造:-)是的,我想是的。正则表达式不适合这里。无论如何,谢谢。我不确定,所以发表有争议的声明是检验定义的好方法。:-)这里有更多关于“一流”的定义:
# Var property inside a string
$a = get-process a*
write-host "Number of process : $a.length" # Get a list of process and then ".length
Number of process : System.Diagnostics.Process (accelerometerST) System.Diagnostics.Process (AEADISRV) System.Diagnostics.Process (agr64svc).length

write-host "Number of process : $($a.length)" # To get correct number of process
Number of process : 3
$customScript = {  "This i as test"; This will be procedure error!  }

(. $customScript 2>&1 ) | %{"CAPTURING SCRIPT OUTPUT: "+$_}