TclにはTclコマンドを対話的に実行するTclシェルと、Tclコマンドを記述したプログラムファイルを読み込んで解釈・実行するインタプリタが実装されています。
この記事では、Tclシェル の起動と終了のやり方とプログラムファイルの実行方法を紹介します。
利用環境がWindowsの場合
事前準備
必須ではないですが、Tcl/Tk専用のフォルダを作成して、デスクトップ画面にショートカットを作成しておくと便利です。
ショートカットの作り方
[作業用フォルダ:D:\Tcl-Tk とした場合]
- デスクトップ画面で右クリック>新規作成>ショートカット を選択する。
- 項目の場所に C:\WINDOWS\SYSTEM32\cmd.exe を入力して「次へ」を押す。
- ショートカットの名前に「初めて使うTcl-Tk」を入力して「完了」を押す。
- 作業用フォルダのパスを設定する。
- 作成したショートカットで右クリック>プロパティを選択する。
- リンク先に C:\WINDOWS\SYSTEM32\cmd.exe が入力されていることを確認する。
- 作業フォルダの C:\WINDOWS\SYSTEM32 をD:\Tcl-Tk に変更し「OK」を押す。
[参考:ショートカットのプロパティ]
Tclシェルの起動・実行・終了の方法
Tclシェルを起動して対話的にTclコマンドを実行するには以下のようにします。
- スタートボタンからコマンドプロンプを開く。または作成しておいたショートカットをダブルクリックしてコマンドプロンプトを開く。
- Tclシェルを起動する。
D:\Tcl-Tk>tclsh
- コマンドプロンプトが「D:\XXX>」から「%」に変わります。 これで、コマンドラインより直接Tclコマンドを入力し、対話的に実行することができます。
- Tclシェルを終了するには exitコマンドを入力します。
[使用例 : hello, world! と表示する]
D:\Tcl-Tk>tclsh
% puts "hello, world!"
hello, world!
% exit
D:\Tcl-Tk>
プログラムファイルを実行する
Tclのプログラムファイルを実行するには以下のようにします。
[サンプルプログラム : hello.tcl]
# hello.tcl
puts "hello, world!"
まずは、上のサンプルプログラムをテキストエディターで作成します。「#」で始まる行はコメント行です。記述しても無視されるので、プログラムに影響を与えません。
次に、作成したプログラムファイルを実行するには、tclshの引数に作成したファイル名を指定します。
[実行例 : hello, world! と表示する]
D:\Tcl-Tk>tclsh hello.tcl
hello, world!
D:\Tcl-Tk>
Windowsの場合、拡張子「.tcl」は wish に関連付けされています。hello.tclはコンソール画面に文字列を出力するプログラムなので、エクスプローラーからhello.tclをダブルクリックしても、空のWindow画面が開くだけで何も表示されません。
messageコマンドを使うとWindow画面に文字列を表示できます。
[サンプルプログラム : hello-w.tcl]
# hello-w.tcl
message .msg -width "200" -text "hello, world!"
button .btn -text "終了" -command exit
pack .msg .btn
上のサンプルプログラムを実行するには、wishの引数に作成したファイル名を指定します。
D:\Tcl-Tk>wish hello-w.tcl
または、エクスプローラーからhello-w.tclをダブルクリックすると下の画面が開きます。
その他の方法
(1)sourceコマンドで読み込む
tclsh起動後にsourceコマンドでプログラムファイルを読み込むことも出来ます。
[実行例 : hello, world! と表示する]
D:\Tcl-Tk>tclsh
% source hello.tcl
hello, world!
%
(2)バッチファイルから起動する
パイプやリダイレクションで他のコマンドに繋ぐ必要がある場合、プログラムの実行に「tclsh hello.tcl」と入力する方法では、コマンドラインが長くなり不細工です。
そんな時は、以下のやり方が使えます。
以下の内容を記述した、拡張子が.batまたは.cmdのファイルを作成する。
例.
@tclsh hello.tcl %*
- 「@」を付けると、そのコマンドを表示しません。
- 「%」はバッチファイルの引数が格納されています。
- %1 から%9 まで最大9個保存されます。
- 「%*」ですべての引数を渡せます。
[実行例]サンプル:arg-list.tcl 引数の受渡テスト
# argv0 : プログラム名
# argv : 引数のリスト
# argc : 引数の数
puts "プログラム名: $argv0"
puts " 引数リスト: $argv"
puts " 引数の数: $argc\n"
set i "1"
foreach var $argv {
puts "第 $i 引数: $var"
incr i
}
上のサンプルプログラムの作成と、「@tclsh arg-list.tcl %*」を記述した arg-list.cmdを作成する。実行は以下のようにします。
D:\Tcl-Tk>arg-list aaa bbb ccc
プログラム名: cmd.tcl
引数リスト: aaa bbb ccc
引数の数: 3
第 1 引数: aaa
第 2 引数: bbb
第 3 引数: ccc
「利用環境がUnixの場合」へ続く・・・
コメント