$a = "dir $MyFile" PS> $a > dir MyFile.txt PS> $($a)-6ren">
gpt4 book ai didi

powershell - PowerShell $($ a)出现意外结果

转载 作者:行者123 更新时间:2023-12-02 23:12:35 25 4
gpt4 key购买 nike

PowerShell 4 ISE

PS> $MyFile = "MyFile.txt"
PS> $a = "dir $MyFile"

PS> $a
> dir MyFile.txt

PS> $($a)
> dir MyFile.txt

为什么 $($a)不执行 "dir MyFile.txt"命令?

提前致谢。

最佳答案

这是Powershell中的预期行为。您必须记住要分配给$a的内容,本例中为[String]
$(...)语法确实执行...并返回结果,但是在这种情况下,它“正在执行”字符串文字,就像在命令行中键入它一样,这是带引号的键。

您可能一直认为它可以像bash一样工作,并且确实可以,但是并不是完全因为您不能将命令分配给变量而已。必须在脚本中逐字输入:

$(dir MyFile.txt)

另一方面,您可以执行以下操作:
$(Invoke-Expression $a)

但是通常,当您将复杂的东西嵌入到字符串文字中时,仅需要$()语法即可:
"I like files named $(dir MyFile.txt)"

关于powershell - PowerShell $($ a)出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33424797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com