メインコンテンツまでスキップ
バージョン:23.4

SenseTalkとシステムの相互作用

これらのコマンドと関数により、SenseTalkスクリプトが実行しているシステムと対話したり、他のプログラムを起動したり、他のプログラムでファイルを開いたり、UNIXシェルを通じてシステムコマンドを実行することができます。

Open コマンド

動作: 別のプログラムを開始したり、スクリプトが実行されているマシン上の別のプログラムでファイルを開きます。このコマンドの最も一般的な使用例は、スクリプトが生成したファイルを開くことで、例えばテキストエディタでテキストファイルを開いたり、スプレッドシートプログラムでタブ区切りのファイルを開いたり、ユーザーがそれにさらに変更を加えたり、印刷したりすることです。要求されたアプリケーションがスクリプトが実行されているマシン上ですでに実行されている場合、それは前面に持ってこられます、そうでなければそれは起動されます。

構文:
open application
open file with application

例:

open "iTunes" // このマシンでiTunesを起動します

例:

open "/tmp/myFile" with "TextEdit"

注:スクリプト内でファイルを読み書きするためにファイルを開くには、open file コマンドを使用してください。

Shell コマンドと関数

動作: ローカルマシン上のコマンドラインシェルでコマンドを実行し、その出力を返します。

構文:
shell command {, optionalParameters}

関数として:
shell( command {, optionalParameters} )

パラメータの終わりにプロパティリストとしてオプションの名前付きパラメータを含めることができます。これには以下が含まれます:

  • includeErrors: Trueに設定されている場合、標準エラーストリームを出力に含めます;
  • notify:シェルタスクが完了したときに通知するオブジェクト(メッセージが指定されていない場合はデフォルトで「me」);
  • message: タスクが完了したときに通知オブジェクトに送るメッセージ(指定されていない場合はデフォルトで"ShellDone");
  • command: 実行するコマンド(これにより単一のプロパティリストパラメータを使用できます)。

notify または message が指定されている場合、shell コマンド/関数はすぐに戻り、スクリプトが進行します。shell タスクが終了すると、通知メッセージが notify オブジェクトに送信されます。通知メッセージには、出力、終了ステータス、および入力コマンド(異なるコールバックを区別するため) の3つのパラメータが含まれます。タスクが完了する前にスクリプトの実行が完了した場合、結果は未定義です。

複数の shell 呼び出しが非同期に行われる場合、結果のコールバックの順序は、呼び出しが行われた順序とは異なる可能性があります。実行速度の速いコマンドは、前に呼び出された低速のコマンドよりも先に完了する可能性があります。

例:

shell "rm /tmp/testfile"

例:

log shell(command:command, includeErrors:YES)

例:

put shell("cd /; ls -l") into rootDirectoryList

例:

get shell(command:theCmd, includeStderr:YES)
shell "grep -i 'foo' */*", notify:me, message:"grepComplete"

例:

put shell(includeErrors:YES, command:theCMD)
注記

シェルコマンドを実行する場合、Windowsオペレーティングシステムの制限があります。Windows でシェル コマンドを実行すると、shell コマンドからの出力は表示されません。この問題を解決するには、コマンドの出力をファイルにパイプ処理してリダイレクトします。スクリプトが完了したら、ファイルの内容を手動で読み取って結果を確認します。

shell "c:\windows\system32\cmd.exe", <</c "C:\Program Files (x86)\adt-bundle-windows-x86_64\sdk\platform-tools\adb" >> && MyCommand && "> someFile.txt"
put file "C:\wherever\someFile.txt"

テクトーク

shellコマンドと関数はどちらもthe resultを実行した_command_の終了コードに設定します。通常、コマンドが正常に実行されると終了コードは0となり、問題が発生した場合には他の値となりますが、終了コードの正確な意味は実行されたコマンドによります。

command は、スクリプトが実行されているマシンで実行されます。別のマシンでシェル・コマンドを実行するには、リモート・アクセスを提供するシェル・コマンド (rshssh など) のいずれかを使用できます。

the shellCommandグローバルプロパティを使用して、デフォルトのシェルアプリケーションを制御することができます。各プラットフォームの初期デフォルトシェルに関する詳細な情報や設定の変更方法については、the shellCommandをご覧ください。