1

だから私はpowershellクラスを受講していて、フィートをメートルに変換するスクリプトを作成しようとしています. これは私がこれまでに持っているものですが、正しく機能していません。私はそれを約1時間いじっていますが、適切に動作させることはできません.

Write-Host Hey there. This is an easy script that will convert Feet to Meters - ForegroundColor Cyan -BackgroundColor Magenta
PAUSE;
Function script:converttometers($feet)
{
    "$feet feet equals $($feet*.31) Meters"
} #end Converttometers

Converttometers -feet $feet(Read-Host)

読み取りホストから入力を取得するのに問題があります。なんらかの理由で使いたくない =/

4

1 に答える 1

1

次のように関数を呼び出してみてください。

ConvertToMeters -feet (Read-Host -prompt "Enter feet")

Write-Hostを使用してコンソールにメッセージを書き、文字列を引用しない場合、PowerShell は余分なスペースとコンマを削除することにも注意してください。-また、 Powershell が次のテキストをパラメーターとして解釈しようとする可能性があるため、注意が必要な場合。その後、引用符のみを使用することをお勧めします。

Write-Host 'Hey there. This is an easy script that will convert Feet to Meters' -ForegroundColor Cyan -BackgroundColor Magenta

ところで、それは恐ろしい色の組み合わせです。:-)

あなたが遭遇している他の問題は、$feet が数値ではなく文字列であることです。次のようにしてみてください。

Write-Host 'Hey there. This is an easy script that will convert Feet to Meters' -Fore Cyan -Back Magenta 
PAUSE 

Function ConverTo-Meters($feet) { 
    "$feet equals $(.31*$feet) meters" 
} 

ConvertTo-Meters -feet (Read-host -prompt "Enter Feet")

これを解決する別の方法は、$feet のタイプを指定することです。

Function Converttometers([double]$feet) { ... }

現在の方法では、PowerShell は文字列を取得して繰り返すことができる機能を使用しています。

"a" * 4 # outputs aaaa

1 未満の .31 を指定したため、結果として空の文字列が得られます。

("10" * .31).length # outputs 0
于 2013-10-26T23:39:32.553 に答える