2016-09-08 9 views
0

私はその後、私は$ I変数の値から変数の値を呼び出す

の入力基準値から$トムと呼ばれる変数の値を呼び出したい

./name -i tom 

PowerShellでスクリプトを実行します。

$tom = 29 
$andrew = 99 
$bill = 5 

Echo $i's age is $i 

これは印刷になります。PowerShellで

toms age is 29 

答えて

0

を、これは次のようになります。のの内容:

$person = $args 
$ages = @{"Tom" = 23; 
    "Andrew" = 99; 
    "Bill" = 5} 

$age = $ages[$person] 

Write-Host "$person's age is $age" 

そして、あなたはこの

.\name.ps1 "tom" 

$argsのようにそれを呼び出すと、スクリプトに送信するすべての引数が含まれています。あなたはこのようなスクリプトを呼び出すのであれば:.\name.ps1 "tom" "bill"を、あなたの結果は次のようになります。tom bill's age is 23 5

+0

から値を拾いに固有の$ argsをである。\ name.ps1「トム」 – Rustle

+0

'$のargs'はあなたとスクリプト/関数を呼び出したパラメータのための特別な値です。 '。\ name.ps1" tom "'のように呼び出すと、 '$ args'に' 'tom" 'が含まれます。 複数の値 '。\ name.ps1" tom "jerry"で呼び出す場合、 '$ args'には' 'tom" 'と' 'jerry" ' –

0

私はハッシュテーブルを使用していますが、グローバル変数を持っている場合は、あなたが使用することができます以下

#variables 
$tom = 29 
$andrew = 99 
$bill = 5 

#your parameter 
$i = "tom" 

#echo 
Echo "$i's age is $((Get-Variable | ? {$_.Name -eq $i}).Value)" 
+0

という配列があります – Rustle

0

ものに別のアプローチ提供されます。間違いなく、余計なコードがありますが、私はPowerShellのparamの機能を手に入れることをお勧めします。

# PowerShell's native argument/parameter support 
param(
    [string]$name 
) 

# Create an array with Name and Age properties as hashtable. 
$people = @(
      @{ Name = "Tom" ; Age = 29}, 
      @{ Name = "Andrew" ; Age = 99}, 
      @{ Name = "Bill" ; Age = 5} 
      ) 

# Find the person by comparing the argument to what is in your array 
$person = $people | Where-Object {$_.Name -eq $name} 

# Single name version: If the person is found, print what you would like. Otherwise let the user know name not found 
if($person -ne $null){ 
    Write-Host "$($person.Name) is $($person.Age) years old" 
}else{ 
    Write-Host "$name not found in list." 
} 

<# Multiple name version : get rid of the param section 

foreach ($name in $args){ 
    $person = $people | Where-Object {$_.Name -eq $name} 
    if($person -ne $null){ 
     Write-Host "$($person.Name) is $($person.Age) years old" 
    }else{ 
     Write-Host "$name not found in list." 
    } 
} 
#> 
関連する問題