tclsh

ReferenceTOPKeywords

コマンド名

tclsh - Tclインタープリタのためのシンプルなシェル。

構文

tclshfileName arg arg ...。?

解説

Tclshは標準入力もしくはファイルからのTclコマンドを読み込み、それらを評価するシェル似のアプリケーションです。引数なしで実行された場合は、対話型的に実行します ( 標準入力からTclコマンドを読み取って、印字コマンド結果及びエラーメッセージは標準出力に出力 ) 。 Tcldhexitが呼び出されるか標準入力のファイル末尾につくまで実行します。ファイル.tclshrc ( あるいはウィンドウズプラットホームでのtclshrc.tcl ) がユーザーのホームディレクトリに存在する場合、tclshは標準入力から最初のコマンドを読み取る前にこのファイルをTclスクリプトとして評価します。

スクリプトファイル

tclshが引数付きで実行される場合、最初の引数はスクリプトファイル名です。そして、あらゆる後継の引数は変数としてスクリプトに利用( 下記を参照 ) されます。tclshのコマンドは標準入力から読み取る代りに、指定されたファイルからTclコマンドを読み取ります。ファイルのエンドに達するときにtclshは終了します。この場合.tclshrcの自動評価がありませんが、望むならスクリプトファイルはそれを sourceでインクルードすればよいです。

最初の行は下記内容でTclスクリプトファイルを作成したとします

#!/usr/local/bin/tclsh

そして、このファイルを実行可能に設定すれば、直接、自分のシェルからスクリプトファイルを呼び出すことができます。これはtclshが/usr/local/binにおけるデフォルトロケーションにインストールされたと仮定した場合です。tclshがどこか他の場所にインストールされた場合、対応した内容に前述のラインを修正しなければなりません。多くのUNIXシステムは#!ラインに長さ約30文字を越えるのを許さないので、tclsh実行可能ファイルは短いファイル名によってアクセスできることを確認しましょう。

スクリプトファイルを次の3行で始めることは更に良いアプローチです。

#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"

このアプローチには前のアプローチと比べると3つの利点があります。最初にtclshバイナリのロケーションがスクリプトに固定で定義される必要はありません。それはシェル検索パスのどこにあってもよいです。2番目に前のアプローチにおける30文字ファイル名限界を突破できます。3番目にこのアプローチはたとえtclsh自体がシェルスクリプトであるとしても、機能します( 多重アーキテクチャ、または、マルチオペレーティングシステムを扱うためにシステム上で行われます。tclshスクリプトがバイナリのうちの1つを選択して実行させます) 。この3行はスクリプトを処理するためにshtclsh双方共使います。しかし execshだけにより実行されます。shは最初にスクリプトを処理します。それは、第2のラインをコメントとして扱い、そして第3のラインを実行します。 execステートメントはshellの処理を止め、その代りに全体のスクリプトを再処理するためのtclshを始めます。tclshがスタートしたら3行全てをコメントとして扱います。第2のラインの終りのバックスラッシュによって第3のラインを第2のラインに関するコメントの一部として扱われます。

注目すべきは、バージョン番号を名前の一部としてtclshをインストールするのが一般的な方法です。これは、ただちに同じシステムでTclの多重バージョンを共存させることができる利点を持ちます。

変数

Tclshは次のTcl変数を設定します。

argc
スクリプトファイル名を示すのではなく、arg引数 ( なければ0です ) の個数を示します。
argv
Tclリストでその要素は順番になっているarg引数 、またはarg引数がなければ空の文字列です。
argv0
指定されればfileNameで指定されなければtclshをコールした側の名前を示します。
tcl_interactive
tclshが対話式( fileNameが指定されず、そして標準入力がターミナル似のデバイスである )で実行されていれば1で、別の方法で実行していれば0です。

プロンプト

tclshが対話式で実行していれば、通常「%」によって各コマンドを促します。変数tcl_prompt1、及びtcl_prompt2をセットすることによってプロンプトを変えられます。変数tcl_prompt1が存在すればプロンプトを出力するためのTclスクリプトでなければなりません。既定プロンプトを出力する代りにtclshtcl_prompt1にあるスクリプトを評価します。newlineがタイプされたが、現在のコマンドがまだ完全ではないとき、変数tcl_prompt2は同様の方法で使われます。tcl_prompt2がセットされていなければ、不完全なコマンドのためのプロンプトは出力されません。

標準チャネル

更に詳細の説明は Tcl_StandardChannelsをご参照下さい。

参照

fconfigure, tclvars

キーワード

argument, interpreter, prompt, script file, shell


Copyright © 1993 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.