在 Powershell 中,如何間接參考變數?
我有在代碼的許多部分中參考的表,所以我有一個表名串列,如下所示:
$xTableName = "Tbl_x"
$yTableName = "Tbl_y"
$zTableName = "Tbl_z"
我有一個函式,我想向其傳遞一個表示表的字串:
function getResult($entityName)
{
$tableName="$" $entityName "TableName"
$sqlCommand = "SELECT * FROM " ${$tableName}
run query etc...
}
我打電話
getResult("x")
我正在嘗試獲取 $sqlCommand = "SELECT * FROM Tbl_x" 但獲取 "SELECT * FROM $xTableName"
我如何實作這一目標?
uj5u.com熱心網友回復:
您可以使用Get-Variable -ValueOnly按名稱獲取變數的值:
$tableName = Get-Variable "${entityName}TableName" -ValueOnly
話雖如此,一種更快且更不容易出錯的方法是利用字典將物體名稱映射到表名稱:
function getResult($entityName)
{
$tableMapping = @{
x = "Tbl_x"
y = "Tbl_y"
z = "Tbl_z"
}
if(-not $tableMapping.ContainsKey($entityName)){
Write-Error "Invalid entity name '$entityName'"
}
else {
$tableName = $tableMapping[$entityName]
$sqlCommand = "SELECT * FROM ${$tableName}"
# execute sql query ...
}
}
uj5u.com熱心網友回復:
更簡潔的方法是使用正則運算式。我們可以這樣做:
$xTableName = "Tbl_x"
$yTableName = "Tbl_y"
$zTableName = "Tbl_z"
function getResult($TableName)
{
$sqlCommand = "SELECT * FROM tableName" -creplace "tableName","$TableName"
}
getResult($xTableName)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/409463.html
標籤:
