web-dev-qa-db-ja.com

コマンドラインからTCLのバージョンを取得しますか?

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

languagename -v

必要な情報を提供します。これはtclshのオプションではないようです。

TCL FAQ Q.B21 は、

echo 'puts $tcl_version;exit 0' | tclsh

しかし、もっと簡単でクロスプラットフォームなものはないのでしょうか? (Microsoftオペレーティングシステムでは、これが大幅に失敗すると思われます。)

-

編集:オペレーティングシステムのコマンドラインから直接実行できるものを探していることを強調するために。 tclshを開始すると、あらゆる種類の情報を利用できますが、自動検出を容易にするために、それを回避しようとしています。

51

これはあまりにも単純に聞こえるかもしれませんが、コマンドを含むスクリプトファイルを作成した場合:

puts $tcl_version

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

====

私は好奇心が強くなったので、引用符なしで試してみました:

echo puts $tcl_version;exit 0 | tclsh

Windowsボックスで問題なく実行できます...たぶん、TCL検出前のプラットフォーム検出はオプションですか?

42
Niall Byrne

これもできます。

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

=======

引用符なしで試してみると、それはうまくいきませんでした。 Mac osxの実行

23
Darkninja

シェルに応じて、次のようになります。

tclsh <<< 'puts [info patchlevel]'