簡體   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