• ベストアンサー

tcl/tkで標準出力に出される値を変数に代入したい

tcl/tk(8.4)をWindows2000/98で使っております。 あるライブラリで、コマンドの実行結果を標準出力に返してくるものがあるのですが、その結果を変数で受けるには どうしたらよいのでしょうか。 具体的には、 >gpib read とシェル内で入力すると結果が >123 と返ってきます。この123を、変数で受けたいのです。 いろいろ、検索してみたのですが、そういうことをして いる例がなくて困っております。 なお、あるライブラリとは、 http://gpib-tcl.sourceforge.net/ のGPIB-tcl のことです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.1

set var [gpib read] または set var [exec gpib read] でできませんか(var は変数の意)。 gpib というコマンドにパスが通っていなければ 絶対パスを指定する必要があるかもしれません。

参考URL:
http://www.interq.or.jp/japan/s-imai/tcltk/index.html
spinflip
質問者

お礼

できませんでした、、、、。 set x [puts "Hello"] では、xには、Helloは代入されませんでした。 なお、gpibはパッケージですので、DOSのコマンド ではありません。直接、wish等から実行できる コマンドです。 大変コマって、はまっております。どうしましょう。

spinflip
質問者

補足

出来ました。十分に確認せず、出来ないと申し上げで しまい、すみませんでした。 ありがとうございます。 昨晩はgpibパッケージの使える環境が無かった ので、とりあえず、「標準出力に文字を書くputs」 で試してダメだったので、「出来ませんでした」 と断言してしまったのですが、本日、gpibコマンド で試したら、無事に、変数に代入されました。 助かりました。 これからもよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • TCL/TKのインストール

    標準インストール(カスタムをしてない)FedoraCore6に以下のものをインストールしようとしています。 ・tcl8.3.1 ・tk8.3.1 ・itcl3.1.0 tcl8.3.1にはtcl8.3.1i18n.patchを、tk8.3.1にはtk8.3.1i18n.patchを当ててtcl/tkを使用しようと考えているのですが、tcl8.3.1にパッチを当てて、 ./configure --prefix=/usr/local とコマンドを打つと以下の様なエラーが出てconfigureが完了しません。 checking system version (for dynamic loading)... ./configure: line 5754: syntax error near unexpected token `)' ./configure: line 5754: ` OSF*)' なお、標準インストールのFedoraCore1とFedora8ではきちんとインストールが出来て、TCL/TKのプログラムも動作します。 どなたか分かる方が見えましたら、ご教授をお願いします。

  • FC6にTCL/TKのインストール

    標準インストール(カスタムをしてない)FedoraCore6に以下のものをインストールしようとしています。 ・tcl8.3.1 ・tk8.3.1 ・itcl3.1.0 tcl8.3.1にはtcl8.3.1i18n.patchを、tk8.3.1にはtk8.3.1i18n.patchを当ててtcl/tkを使用しようと考えているのですが、tcl8.3.1にパッチを当てて、 ./configure --prefix=/usr/local とコマンドを打つと以下の様なエラーが出てconfigureが完了しません。 checking system version (for dynamic loading)... ./configure: line 5754: syntax error near unexpected token `)' ./configure: line 5754: ` OSF*)' パッチを当てない場合も同様のエラーが起きてしまいます。 なお、開発ツールをインストールした状態のFedoraCore1では、パッチを当ててインストールができて、Fedora8ではパッチを当てなければインストールが出来て、TCL/TKのプログラムも動作します。 どなたか分かる方が見えましたら、ご教授をお願いします。

  • 標準出力と標準エラー出力を変数にセットしたいです。

    始めたばかりの初心者の為、変な質問でしたら申し訳ありません。 標準出力と標準出力を別々の変数にセットしたいのですが、そのやり方が分からず困っています。 やりたいことは、 コマンド(diffやcatなどの)実行結果の標準出力と標準エラー出力を それぞれ「任意の文字_受取パラメータの値」にセットすることをしたいです。 下記は、1回ファイルに出力して、それを読んで変数にセットするように記述したものです。 ※記述間違っていたらすみません。 ファイルに書かなくても、パイプやその他コマンドなどで出来る方法はないでしょうか? ex) test.sh 1.txt 2.txt TEST01 で実行 #!/bin/sh parm1 = $1 parm2 = $2 parm3 = $3 diff "${parm1}" "${parm2}" > test.log 2> err.log eval w_stdout_${parm3}=¥`cat test.log¥` eval w_stderr_${parm3}=¥`cat err.log¥` eval echo "stdout:¥"¥{w_stdout_${parm3}}¥"" eval echo "stderr:¥"¥{w_stderr_${parm3}}¥"" ※実行した結果 stdout:diff結果 stderr:空白 お手数ですが、何卒宜しくお願い致します。

  • Tcl/Tkの超初歩的な質問です。

    Tcl/Tkの超初歩的な質問です。 「open $filename」でファイル入力(オープン)する際に対象ファイルはディレクトリのどこへ置くのがデフォルトなのでしょうか。スクリプトと同じディレクトリに置いてもファイルがないとエラーになっています。 また、「source hoge.tcl」をwishで行った後「hoge」と入力して実行したいのですが、無効なコマンドとかのエラーになるのですが、これもどう解決すればいいのか見当つきませんでした。 解決方法のご存知の方よろしくお願いします。

  • teeコマンドを使わずにUNIXで標準出力とエラー出力を、ファイルと標準出力の両方に出すには?

    UNIX系のBシェルで、 コマンドを実行して、 その標準出力とエラー出力をログファイルに出力し、 かつ、同じものを標準出力にも出力したいのです。 また、その後でコマンドの戻り値$?をエラーチェックしたいです。 このため、パイプでteeコマンドを使用すると戻り値が上書きされてしまいます。 いったん一時ファイルに出力するしかないのでしょうか?

  • Tcl/Tkのエラーメッセージ対応

    Tcl/TkでGIF形式指定のうえ画像保存をしようとすると、次のようなエラーメッセージが出ます。  "Too many colors …" これはパレットにない色を使用した結果だと思うのですが、image createコマンドでオプションを次のように指定しています。  image create …… -format gif -palette 256/256/256 なお使用した色は次の6色で、エラーメッセージが画像保存の段階になって出てくるので、どの色でひっかかっているのか不明です。  blue,DeepSkyBlue,red,coral,black,white 一つ一つの色を取捨選択して確認するのも面倒なことだし、後学のためにご存知の方がいらっしゃればコメントお願いします。 Tcl/Tkが扱うGIFカラーは、特定の256色に固定なのか、それとも1670万色のうちの任意の256色を指定できるのかも知りたいところです。具体的に説明しているURLの紹介でもかまいません。なおTcl/TkのバージョンはWindows版"ActiveTcl8.4.7.0"です。

  • UNIX & Linux の標準出力で得たデータを、C言語のローカル変数に取り込むには?

    c言語の関数を実行中に、UNIXにあるシェルコマンド"wc"の標準出力から得られるデータを、直接ローカル変数に入れたいと思います。 int hoge(void) { int ans; ans = system("wc"); return } こんな感じにしたかったのですが、systemコマンドでは、戻り値を期待できずに居ます。 何か善い方法はありませんか?

  • system で実行したプログラムの標準出力を変数で受け取りたい

    実行結果を標準出力に出力する cプログラム A があります。 perl から system を利用して A 呼び出し、その実行結果を perl で加工する仕組みを考えています。 今のところ、標準出力を一旦変更して、テンポラリのファイルに出力させ、再度そのファイルをオープンして perl で利用するという形で何とか実現できています。 open (SAVESTDOUT, ">&STDOUT") or die "..."; #(1) open (STDOUT, ">$tempFile") or die "..."; #(2) system "A"; #(3) close(STDOUT) or die "..."; #(4) open(STDOUT, ">&SAVESTDOUT") or die "..."; #(5) という感じです。 一旦テンポラリーのファイルを介するところがスマートでないので、直接変数に標準出力結果を落したいです。 (1) そのまま (2) 標準出力を perl の変数に変更 (3) そのまま (4) なし (5) そのまま といった感じで実現したい(もちろんより良い解法があれば尚宜しいです)のですが、可能でしょうか? ご教授ください。宜しくお願いします。

    • ベストアンサー
    • Perl
  • Cシェルで標準エラー出力への出力方法を教えてください。

    Cシェルにおいて、通常echo文は標準エラー出力へ表示されます。 echo文のように引数で指定した文字列を標準エラーとして出力するような コマンド?があったら教えてください。 c言語では fprintf(stderr,"test!\n"); などとやりますが、Cシェルではありますでしょうか?

  • 標準エラー出力の可否操作について

    unix-cプログラムにてpopen()等により実行した結果、 popen()の引数に設定したコマンドのパスが設定されていない場合 標準エラー出力をはいてしまいます。 close(2)を実行することにより出力はまぬがれるのですが、 他箇所の標準エラー出力は表示させたいためclose(2)では実現できません。 何かpopen()実行時の標準エラー出力をさせず処理を進める良い方法はありませんでしょうか