この記事は
SQL*PLUSもどきを作る その1(PowerShell Tips)SQL*PLUSもどきを作る その1の説明(PowerShell Tips)SQL*PLUSもどきを作る その2(PowerShell Tips)SQL*PLUSもどきを作る その3(PowerShell Tips) SQL*PLUSもどきを作る その4(PowerShell Tips)
の続きです。
今回紹介する関数は、コマンドラインから複数行の入力を取得するというものです。
Oracle用というわけではなく普段でも使用可能な関数です。
今回、SQL*PLUSもどきを作るにあたり、SQL文をどう入力させるかを検討しました。
SQL*PLUSでは複数行にわたるSQL文の入力が可能です。 しかしPowerShellでは複数行の入力を読み取るコマンドレットがないので、自作したというわけです。
下記が、複数行の入力を受け取るRead-MultiLine関数です。
#========================================================================================= # Read-MultiLine: コマンドラインから複数行の入力を受け取る # # UPDATE 2008/04/24 Ver.1.0.0 # # 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 "#" この例は入力の終了を判定する文字を"#"とします。 ユーザー入力の行終端が"#"である場合に、入力を中断し結果を返します "@ -foregroundcolor Cyan return } if ( $prompt.Length -gt 0 ){ Write-Host ($prompt + ":") } while(1) { $ip += Read-Host if ($ip.SubString($ip.Length-1,1) -eq $endChar){ break; } else{$ip += "`n"} } #Write-Host $ip return $ip.Substring(0, $ip.Length - $endChar.Length) }
この関数は、実行すると";"が入力されるまで、複数行に渡る文字列の読み取りを行います。
PS > $inp = Read-MultiLine ABC DEF GHI;
下記のようにするとプロンプトを表示した後に入力を受けつけます。
PS > $inp = Read-MultiLine "入力してください" 入力してください: This is Read-MultiLine Command;
また、下記のようにすると終了判定文字を";"から"#"に変更することができます。
PS > $inp = Read-MultiLine -endChar "#" ABC DEF GHI#
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