如何在PowerShell中连接不带空格的变量和字符串

jum4pzuy  于 2022-11-10  发布在  Shell
关注(0)|答案(2)|浏览(100)

我正在从CSV文件中导入一些值,并使用它们通过以下代码为Android意图创建一个ADB命令。

Write-Host adb shell am start -a android.intent.action.VIEW '-d' '"https://api.whatsapp.com/send?phone=' $($c.number)'"'

这给了我一个输出:

adb shell am start -a android.intent.action.VIEW -d "https://api.whatsapp.com/send?phone= 12345678 "

如何删除变量连接到字符串以提供以下输出的空格:

adb shell am start -a android.intent.action.VIEW -d "https://api.whatsapp.com/send?phone=12345678"
fykwrbwg

fykwrbwg1#

使用*string interpolation*,切换为双引号:

Write-Host adb shell am start -a android.intent.action.VIEW '-d' "`"https://api.whatsapp.com/send?phone=$($c.number)`""

在双引号内,您必须用反标记转义双引号才能按字面意思输出它们。

lmvvr0a8

lmvvr0a82#

毫无疑问,zett42's helpful answer是您问题的最佳解决方案。
至于你尝试了什么

Write-Host ... '"https://api.whatsapp.com/send?phone=' $($c.number)'"'
  • $($c.number)之前有一个空格这一事实意味着您正在传递至少两个参数。
  • 然而,由于PowerShell的参数模式解析怪癖,您传递的是Three,因为紧跟在$($c.number)之后的'"'字符串也成为它自己的参数。
  • 有关详细信息,请参阅this answer

因此,最好避免在PowerShell中使用复合字符串参数(由带引号和不带引号/不同引号的标记组成)。**
因此:

  • 任一:使用、可扩展(双引号)字符串("..."),如zett42的答案所示。
  • OR:使用(...)中的表达式,并使用字符串连接+运算符,如下所示。
Write-Host ... ('"https://api.whatsapp.com/send?phone=' + $c.number + '"')

相关问题