我正在嘗試通過在 powershell 上使用正則運算式來提取 nginx 的版本號。這是我嘗試過的代碼。
(& nginx -v) -match "\d \.\d \.\d "
這似乎不起作用。我用節點嘗試了類似的事情。
(& node -v) -match "\d \.\d \.\d "
在這種情況下,它會吐出來True,我確實獲得了版本號。
$Matches[0] # 16.11.0
事實上,我試圖匹配第一個字符,但它仍然沒有用。
(& nginx -v) -match "."
這不會吐出來,True或者False好像我從未通過-match運算子。我也試圖在輸出的第一行進行匹配,最終得到了這一行,它確實吐出了一些東西,但它是False.
@(& nginx -v)[0] -match "."
我正在使用 powershell 5.1 版和 nginx 1.23.1 版
nginx 的輸出有什么奇怪的地方,以至于 powershell 無法匹配它?我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
你需要使用
(& nginx -v 2>&1) -match "\d (?:\.\d ) "
也就是說,版本字串列印在標準錯誤流上。2>&1將其重定向到標準輸出流,并使文本“可正則運算式”。
uj5u.com熱心網友回復:
或者看起來 cmd 的輸出全部為 1 [stdout](反之亦然,cmd 運行 powershell)。將斜線之前的所有內容都替換為空。
# normally goes to stderr [2] - 'nginx version: nginx/1.23.1'
(cmd /c nginx -v) -replace '.*/'
1.23.1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511189.html
上一篇:如何提出安全請求?
