我在看别人写的脚本里面有使用$($error[0])来显示错误信息,我不明白$() 在这里起什么作用。 $($error[0]) 和 $error[0].exception的输出结果是一样的,可以解释下这两种方法的区别和$()的作用或用法吗?
1 Answers
Best Answer
$()这种写法的主要区别体现在字符串中,单独运行的确没有区别。
比如字符串 “$error[0]”,输出的并不是最后一个error,而是所有的error。因为语法解析器只会解析到$error,后面的【0】是不会解析的。$()的诞生主要是为了解决这个问题。比如字符串“$($error[0])”是会把$()内部的语句当成一个完整的表达式,先运行,运行结束后再替换到字符串中。
PS> dir pstips.net dir : Cannot find path 'D:\Users\bzli\pstips.net' because it does not exist. At line:1 char:1 + dir pstips.net + ~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (D:\Users\bzli\pstips.net:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand PS> 1/0 Attempted to divide by zero. At line:1 char:1 + 1/0 + ~~~ + CategoryInfo : NotSpecified: (:) [], RuntimeException + FullyQualifiedErrorId : RuntimeException PS> "$error[0]" Attempted to divide by zero. Cannot find path 'D:\Users\bzli\pstips.net' because it does not exist. The specified module 'PSReadline' was not loaded because no valid module file was found in any module directory.[0] PS> "$($error[0])" Attempted to divide by zero.
现在明白了,非常感谢!