このBlogはhttp://techbank.jp/hiroへもクロスポストで運営しているのですが、そちらの方でRead-MultiLineメソッドの終端判定に"EOF"という文字列を指定できるかという質問がありました。
この関数はSQL*PLUSもどきで使用することを想定していたので、当初は";"が入力されたら入力を打ち切るように作りました。
(これはSQL*PLUSで実行するコマンドは";"を終端文字として判定しているからです)
しかし、このRead-MultiLineメソッドは「SQL*PLUSもどき」以外でも使用可能な関数であるため、終端判定を1文字以上でも行えるよう見直してみました。
下記が改訂版の関数です。
#========================================================================================= # Read-MultiLine: コマンドラインから複数行の入力を受け取る # # UPDATE 2008/04/24 Ver.1.0.0 # 2008/05/01 Ver.1.0.1 終了判定文字に1文字以上の文字列を指定できるよう修正 # # copyright HIRO's.NET(http://hiros-dot.net/) #========================================================================================= function global:Read-MultiLine ( [string]$prompt, [string]$endChar = ";" ){ if ($args[0] -eq "-?" ) { Write-Host @" 名前: Read-MultiLine 概要: コマンドラインから複数行文字列を取得します。 構文: Read-MultiLine [-prompt] [-endChar] 使用方法: -------------------------- 例 1 -------------------------- `$a = Read-MultiLine この例はコマンドラインから複数行を取得し行終端が";"の場合に読み取りを中止し結果を返します。 入力の終了を判定する文字は";"が規定値です。 -------------------------- 例 2 -------------------------- `$a = Read-MultiLine -prompt "文字列を入力してください" この例はプロンプトに"文字列を入力してください"と表示した後に入力を受け付けます。 -------------------------- 例 3 -------------------------- `$a = Read-MultiLine -endChar "#" この例は入力の終了を判定する文字を"#"とします。 ユーザー入力の行終端が"#"である場合に、入力を中断し結果を返します -------------------------- 例 4 -------------------------- `$a = Read-MultiLine -endChar "EOF" この例は入力の終了を判定する文字を"EOF"とします。 ユーザー入力の行終端が"EOF"である場合に、入力を中断し結果を返します "@ -foregroundcolor Cyan return } if ( $prompt.Length -gt 0 ){ Write-Host ($prompt + ":") } while(1) { $ip += Read-Host if ($ip.SubString($ip.Length - $endChar.Length) -eq $endChar){ break; } else{$ip += "`n"} } #Write-Host $ip return $ip.Substring(0, $ip.Length - $endChar.Length) }
whileの中のif文を
if ($ip.SubString($ip.Length-1,1) -eq $endChar)
から
if ($ip.SubString($ip.Length - $endChar.Length) -eq $endChar)
へ変更しました。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail