簡體   English   中英

Powershell for Linux:將命令與 pipe 符號組合不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM