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

SenseTalkとシステムの相互作用

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

Open コマンド

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

構文:
open application
open file with application

例:

open "iTunes" -- launch iTunes on this machine

例:

open "/tmp/myFile" with "TextEdit"

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

Shell コマンドと関数

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

構文:
shell command {, optionalParameters}

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

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

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

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

複数のシェル呼び出しが非同期に行われる場合、結果として得られるコールバックの順序は、呼び出しが行われた順序と異なる可能性があります。早く実行されるコマンドが、前に呼び出された遅いコマンドよりも早く完了するかもしれません。

例:

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 "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_はスクリプトが実行されているマシン上で実行されます。他のマシンでシェルコマンドを実行するには、rshやsshのようなリモートアクセスを提供するシェルコマンドを使用することができます。

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