2017-08-21 17 views
0

いくつかの変数を設定したtclファイルがあります。私は、このtclファイルを自分のシェルスクリプトにソースしてそこで使用したいと思っています。シェルスクリプトでtcl変数を使用する

私がソース<filename>.tclを実行し、変数をエコーすると、変数が見つからないというエラーが表示されます。 ご協力いただければ幸いです。

+0

シェルでtclを使用する方法の詳細については、[このページ](http://wiki.tcl.tk/37802)を参照してください。 – BladeMight

答えて

0

それはここで変数を設定するTclスクリプトです...複雑

です:

$ cat > vars.tcl 
set var "this is a Tcl value" 

は、我々はシェル構文であることを出力するのTclを得ることができるかどうか見てみましょう:だから

$ echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh 
var="this is a Tcl value" 

とても良い。さて、bashの持つ:

$ echo "${var:-var is unset}" 
var is unset 
$ . <(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh) 
$ echo "${var:-var is unset}" 
this is a Tcl value 

あなたは

$ echo "${var:-var is unset}" 
var is unset 
$ . <(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh) 
sh: 1: Syntax error: "(" unexpected 
$ eval "$(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh)" 
$ echo "${var:-var is unset}" 
this is a Tcl value 

無地/ binに/ SHを使用している場合、これはあなたのTclスクリプトは、変数の設定を超えて何もしないことを前提として、またはあなたが調達してOKだということでそれは変数セットを得るためです。変数値には二重引用符は含まれません。

+0

値のアポストロフィー文字は問題を引き起こすことに注意してください。実際、シェルはTclほどバイナリセーフではなく、変数名のスペースも小さくなっています... –

0

シェルスクリプトでは、tcl変数を使用できません。 sourceはうまくいくようですが、あなたが思うとはしません。シェルスクリプトからsourceコマンドを使用すると、ファイルの内容をシェルスクリプトとして解釈しようとします。

+0

変数にアクセスするには、別のシェルスクリプトが必要ですか、ここで変数を再度定義する必要がありますか? –

+0

@DivyaGuruvayurappan:私はその質問を理解していません。 tclスクリプトで変数を定義したり、シェルスクリプトから変数にアクセスすることはできません。実際の問題が何を解決しようとしているのかわからなければ、より良い助言を与えるのは難しいです。 –

関連する問題