【问题标题】:Command not working with variable in Powershell [duplicate]命令不适用于Powershell中的变量[重复]
【发布时间】:2022-01-23 22:02:46
【问题描述】:

我查看了类似的问题,但没有找到适用于此的答案。我也一直在 docs.microsoft.com 上阅读和挖掘。抱歉,如果之前回答过这个问题并且我找不到它。

当我在 Powershell 中为其提供变量时,带有 CLI 的地理定位 API 无法正常工作。

命令:(本帖更改了站点、API 密钥和 IP) curl.exe 'https://api.xyz.com/ipgeo?apiKey=XXXX&ip=4.3.2.1'

我拥有的脚本:

[string]$lookup = $Args[0]
echo $lookup
echo "$lookup"
curl.exe 'https://api.xyz.com/ipgeo?apiKey=XXXX&ip="$lookup"'

我用geo 4.3.2.1从powershell运行它

起初我没有使用 [string] 变量类型表示法,但在它不起作用之后,我在 docs.microsoft.com 上做了一些阅读 我意识到我希望将其视为字符串,所以我添加了它。

回显语句只是我检查变量的处理方式,并将从最终脚本中删除。它们都正确显示了 IPv4 地址。

我已经尝试过最初使用的脚本

curl.exe 'https://api.xyz.com/ipgeo?apiKey=XXXX&ip=$lookup'

然后在变量周围添加双引号。都不行。

如果我在脚本中编辑该行,并在其中放置一个 IPv4 地址并运行它,它会正确输出,所以我知道它不是 API 或它的命令,而是变量的传递方式电源外壳。

使用该变量时,我从 API 收到错误消息。

我在旧的 powershell 中尝试过这个,今天安装了 powershell 7.2 并得到了相同的结果。

【问题讨论】:

  • 简而言之:只有"..."字符串(双引号,称为可扩展字符串)在PowerShell中执行字符串插值(变量值的扩展),而不是'...'字符串(单引号,称为 逐字字符串):请参阅this answer 了解 PowerShell 的可扩展字符串this answer 了解 PowerShell 的字符串文字的概述.

标签: powershell variables scripting syntax-error powershell-7.2


【解决方案1】:
'https://api.xyz.com/ipgeo?apiKey=XXXX&ip=$lookup'
'https://api.xyz.com/ipgeo?apiKey=XXXX&ip="$lookup"'

看起来你是按字面意思传递的。试试外面的双引号,里面的单引号。

"https://api.xyz.com/ipgeo?apiKey=XXXX&ip='$lookup'"

编辑:字符串和此处字符串中的变量扩展

https://devblogs.microsoft.com/powershell/variable-expansion-in-strings-and-here-strings/

【讨论】:

  • 你可能根本不需要内引号。
  • 我是盲人,好抓!
  • 就是这样!我知道这一定是我的一些语法错误。我在 url 周围使用了双引号,没有内引号或单引号,并且脚本运行完美。再次感谢!
  • 也感谢您为我学习提供的额外阅读/学习
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 2017-04-21
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多