在 linux 上,我可以用不同的方式 rappresent / char:
${家:0:1}
因此,例如,cat ${HOME:0:1}etc${HOME:0:1}passwd
將被視為cat /etc/passwd
有什么方法可以通過powershell和cmd.exe在windows上做同樣的事情作為反斜杠嗎?
uj5u.com熱心網友回復:
PowerShell沒有等效于 POSIX 兼容 shell(例如 Bash)中可用的引數擴展,其中您的子字串提取(在字符位置${HOME:0:1}
獲取長度的子字串,即變數值的第一個字符)就是一個示例(鏈接是 Bash 手冊)。1
0
$HOME
然而,PowerShell 使它變得容易:
使用子運算式運算子將任意運算式甚至整個陳述句的結果嵌入可擴展(雙引號)字串 (
"..."
)中。$(...)
將任何運算式或命令(管道)的結果作為引數傳遞給命令,方法是將其包含在
(...)
分組運算子中。
以下命令變體是等效的,并且動態地使用適合平臺的路徑(目錄)分隔符,即/
在類 Unix 平臺和\
Windows 上:
# -> '/etc/passwd' on Unix
# -> '\etc\passwd' on Windows
Write-Output "$([System.IO.Path]::DirectorySeparatorChar)etc$([System.IO.Path]::DirectorySeparatorChar)passwd"
# Ditto.
Write-Output ('{0}etc{0}passwd' -f [System.IO.Path]::DirectorySeparatorChar)
也可以看看:
[System.IO.Path]::DirectorySeparatorChar
-f
, 字串格式運算子
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/487087.html