set
画面に出力を出力せずにコマンドを実行する方法は? 画面に内容を表示せずにファイルを読み込みたい。
set a [open "giri.txt" r]
set b [read $ifile]
set
画面に出力を出力せずにコマンドを実行する方法は? 画面に内容を表示せずにファイルを読み込みたい。
set a [open "giri.txt" r]
set b [read $ifile]
ここで観察しているのは、対話型Tcl シェルの標準的な動作です。各 Tcl コマンドは結果値とリターン コードを返します。Tcl シェルがインタラクティブな場合 (つまり、その入力ストリームと出力ストリームが端末に接続されている場合)、各コマンドを実行した後、コマンドが返した結果値の文字列表現が出力され、プロンプトが再び表示されます。シェルがインタラクティブでない場合、結果は出力されず、プロンプトも表示されません。
(ちなみに、このような動作はインタープリターではどこにでもあります — さまざまな Unix シェル、Python および Ruby インタープリターは同じことを行います。)
対話セッションでそのような出力を禁止したい場合 (時々便利です)、それを達成するための簡単なハックは、「サイレント」コマンドで「サイレント」コマンドをチェーンすることです (文字列が値を生成します)。表現は空の文字列です)、例えば:
set a [open "giri.txt" r]; list
ここで、引数のないコマンドによって返されるリストはlist
、文字列表現が空の文字列である空のリストです。対話型シェルでは、この一連のコマンドは文字通り何も出力しません。
このようなハックは対話セッションでのみ必要になる可能性があることを繰り返します。スクリプトでは使用しないでください。
インタラクティブな tclsh でこれをオフにすることができます
set tcl_interactive false
ただし、プロンプトもオフになります。