繁体   English   中英

管道后 PowerShell 中的“@-”是什么意思?

[英]What does '@-' mean in PowerShell after pipeline?

这个 StackOverflow 线程中,建议的答案是向命令选项提供魔术“stdin”字符串'@-'

# Create data as PS hashtable literal.
$data = @{ user = @{ name = "$Firstname $Lastname"; email = "$adUsername@mydomain.org" } }

# Convert to JSON with ConvertTo-Json and pipe to `curl` via *stdin* (-d '@-')
$data | ConvertTo-Json -Compress | curl.exe mydomain.zendesk.com/api/v2/users.json -d '@-' -H "Content-Type: application/json" -X POST -v -u myuser:mypass

它就像一个魅力,但神奇的“stdin”字符串实际上是什么意思?

谢谢!

curl-d参数可选地允许您通过文件(其内容)而不是直接值提供数据。

为了将直接值(默认值)与表示文件名的值区分开来,文件名必须以@为前缀(这是 Unix 世界中的常见约定)。

Unix世界中-是在预期文件名的上下文中表示标准输入(标准输入)的常用约定(根据上下文,它也可能表示标准输出(标准输出)。

因此, @-有效地指示curlstdin读取-d参数,在 PowerShell 中(总是)通过管道( | )提供。

在您的 PowerShell 命令中@-必须被引用'@-' ),因为参数开头的未引用@元字符,即具有特殊句法含义的字符(它提供多种功能,包括splatting )。
或者,您可以只转义@本身: `@- (PowerShell 的转义字符是` ,即所谓的反引号)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM