[英]Powershell for Linux: Combining commands with pipe sign doesn't work
有什么方法可以為 Linux 連接 Powershell 中的命令?
這就是我要運行的:
pwsh -Command Invoke-ScriptAnalyzer -Path. | ConvertTo-Json | Out-File -FilePath "/home/administrator/scripts/test.json"
因此,運行 Invoke-ScriptAnalyzer,將結果轉換為 Json 並將結果保存到 test.json。
在 | 之后它不識別任何東西符號:
./test.sh: line 1: ConvertTo-Json: command not found
./test.sh: line 1: Out-File: command not found
我需要在 bash 腳本中使用 go,因此需要使用 -Command 選項啟動 pwsh。
有任何想法嗎?
謝謝
如所寫,您的|
符號由您的 Linux shell (例如bash
)解釋,而不是由 Z3D265B4EFA01EEB18DCCZ7 解釋。
有兩種解決方案:
-Command
參數(POSIX 兼容的 shell 中的'...'
字符串,例如bash
使用字符串的內容逐字):pwsh -Command 'Invoke-ScriptAnalyzer -Path . | ConvertTo-Json | Out-File -FilePath "/home/administrator/scripts/test.json"'
\
- 轉義您想要逐字傳遞的所有 Linux-shell 元字符,例如\|
和\"
在這種情況下:pwsh -Command Invoke-ScriptAnalyzer -Path . \| ConvertTo-Json \| Out-File -FilePath \"/home/administrator/scripts/test.json\"
注意:在這種情況下, pwsh
在 -Command 之后會收到多個-Command
。 然而,PowerShell 在將結果解釋為 PowerShell 代碼之前簡單地加入它們。
這與 POSIX 兼容 shell 的命令行處理不同,后者將第一個post -c
參數解釋為隱式的臨時腳本,附加的 arguments 逐字傳遞給該腳本,可以像往常一樣訪問$1
, ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.