2012-02-08 68 views
42

マシンにインストールされているTCLのバージョンをコマンドラインから取得する方法を非常に簡単にお探しです。ほとんどのプログラミング言語では、コマンドラインからTCLのバージョンを取得しますか?

languagename -v 

のいずれかの情報が表示されます。これはtclshのオプションではないようです。

TCL FAQ Q.B21

echo 'puts $tcl_version;exit 0' | tclsh 

ことを示唆しているが、ストレートフォワードおよびクロスプラットフォームより多くの何があるのだろうか? (私はこれは、マイクロソフトのオペレーティングシステム上で激しく失敗するだろうと思われる。)

-

編集:ただ、私は、オペレーティング・システムのコマンドラインから直接実行することができます何かを探していることを強調するために。 tclshを起動すると利用可能なあらゆる種類の情報がありますが、自動検出を簡単にするためには避けようとしています。

+5

あなたはまた、マイナーバージョン番号を探しているなら、$ tcl_version'を置く代わりに ''の 'プット[情報パッチレベル]を使用します。また、明示的に 'exit'をする必要はありません.Tclはスクリプトの終わりを見て、それ自身で終了します。 –

+0

ありがとうグレン。それは知っておくと便利です。 –

+1

あなたは情報が必要な理由を知るのは興味深いでしょう。 STUBSは最近(12歳未満)のTclを受け入れられるかもしれないので、Tclでは情報が必要ない場合もあります。 – schlenk

答えて

36

これは単純すぎる聞こえるが、あなたはコマンドが含まれていたスクリプトファイル行われている場合があります

puts $tcl_version 

をそして、すべてのプラットフォーム上で実行でしょうTCLSH sillyscript.tclを、走った、バイナリと仮定するとPATHにあります。それは確かに派手でも派手でもなく、またはきちんとしていませんが、AFAIKの要件を満たしています。

====

私は好奇心旺盛だので、私はそれを試してみましたが、引用符:

echo puts $tcl_version;exit 0 | tclsh 

前TCL検出に多分プラットフォームの検出...私のWindowsマシン上でうまく実行オプションですか?

+0

それはそれを行うための最善の方法になる可能性があります。私は他の答えが入ってくるのを待つでしょう、そうでなければ私はこれを受け入れます。ありがとう。 –

+1

異なるプラットフォームには異なるシェルメタキャラクタがありますが、ヘルパースクリプトファイルを使用するのが最も簡単です。 –

+1

Linux、コピー&ペースト:echo 'puts $ tcl_version; exit 0' | tclsh –

18

これも可能です。

bash-3.2$ tclsh 
% puts $tcl_version 
8.6 
% info patchlevel 
8.6.0 

しかし、私が考えている最良の方法はエコーです。

echo 'puts [info patchlevel];exit 0' | tclsh 
echo 'puts $tcl_version;exit 0' | tclsh 

=======奇妙

私はそれが私のために動作しませんでした引用符外にでてみました。お使いのシェルに応じマックOSX

+1

$ tcl_versionを一重引用符で囲まないと、bashシェルは$ tcl_versionをtcl_versionという名前のbashシェル変数の値で置き換えようとします。 tcl_versionは存在しないので、置換は空文字列であり、 "puts $ tcl_version"を "puts"に変換します。 bashシェルの一重引用符は、tclの{}と似ています。補間を停止します。 – Scooter

+0

'info patchlevel'呼び出しを追加したとても貴重なヒントです。 Tcl 8.6には、テストパターンの一部を失敗させるREパターン処理の回帰が知られています。[GCCテストスイートを実行するために必要な "gcc" ...]このバグは8.6.1で修正されました」バージョン8.6はUbuntu 14.04に同梱されていますが、マイナーリリース番号は入手困難でした。 – XavierStuvw

+0

上記の訂正。バージョン記法の用語は_major.minor.patchlevel_です。したがって、 'info patchlevel'はバージョンをパッチレベルまで下げます。マイナーリリース番号が取得するのは難しいと私は誤って言った。パッチレベルはだった。 – XavierStuvw

3

を実行している、それは次のようになります。

tclsh <<< 'puts [info patchlevel]' 
+0

'info patchlevel'は私の見解では' tcl_version'よりも優れています。これはもっと完全なバージョンタグを提供するからです。 – XavierStuvw

関連する問題