今回は外部プログラムを起動する方法について比較してみました。
AWKはツールとしてのスクリプトなので、外部プログラムの結果はスクリプト内部で必ずしも受け取る必要はありません。
PowerShellの場合は「シェル」ということですし、コマンド含めコマンドレットなどの実行結果はすべてオブジェクトになります。無理に外部プログラムを起動する必要はそれぞれありませんが、起動できたほうが便利なこともあります。
AWKにおいては文字列で実行されます。組み込みのsystem関数を使った方法もありますが、こちらのほうが簡単です。
BEGIN{
while("ls -lh" | getline) {
print $0}
}
外部プログラムの出力結果は組み込みのgetline関数を使って受け取ることができます。
一行ずつになるので、標準入力からの受取と同様に$0や$1といった形で受け取ることができます。
一方、PowerShellの場合はそのままコマンドやプログラムの名前を指定して実行することができます。
ひとつだけ特殊なのがパスに空白を含む場合です。
このときはダブルクォーテーションで囲んで文字列にしてしまい、先頭に「&」記号を付けます。この記号は実行演算子と呼ばれるもので、文字列を評価して実行します。
こうするとProgram Files配下のアプリであっても実行することができますね!
さらに、別プロセスで実行させたい場合は「Start-Process」コマンドレットがあります。
コマンドプロンプトの「start」コマンドみたいなものですね。
0コメント