2016-08-18 9 views
0

"" "私はPython、bash、tclモジュールを呼び出すフレームワークを持っていますが、各モジュールはいくつかの共通の終了ステータスで終了する必要がありますSUCCESS = 0、FAILURE =それをキャッチし、それを解釈し、私はそれをどのように行うことができます。 util.py 共通の終了ステータスをPython、bash、tclスクリプト

「「」私は すべてのモジュール内のクラスを宣言し、このクラスをインポートすると考えるが、どのように私はTCLとbashのモジュール にインポートすることができます

class returncode: 
    success=0 
    failure=1 

script.sh

それがエラーを示して調達しながら、0
#!/bin/bash 
. ../../util.py 
catch_error("error","plugin") 

./../util.py: line 1: from: command not found 
../../util.py: line 2: import: command not found 
../../util.py: line 5: $'\nall the common utility functions for harness and plugins are provided in this module\n': command not found 
../../util.py: line 6: syntax error near unexpected token `(' 
../../util.py: line 6: `def platform():' 
./sample.sh: line 4: syntax error near unexpected token `"vam","Dada"' 
./sample.sh: line 4: `catch_error("error","plugin")' 
+1

Python、shell、およびTclは、3つの別々のランゲージです。同じコードを3つすべてにインポートすることはできません。 – chepner

+1

これを行った多言語スクリプトを書くことは可能かもしれませんが、どうして誇りに思うでしょうか?この種のトリックを行うための実用的な目的はありません。 –

+0

もっと便利なのは、これらのモジュールが単一のプロセス内で実行されているか、またはサブプロセスとして実行されているかどうかです。 –

答えて

2

すべての言語が違った事を説明しています。一度に複数の言語のソースコードと同じファイルを使用することは事実上不可能です(これは実行できますが、大変な作業であり、価値がありません)。あなた本当に複雑な言語間シムなしで、ある言語から別の言語に物をインポートしないでください。

しかし、異なる言語では相当の操作を実行できます。これはあなたに関連しています。

あなたのケースでは、成功した実行と失敗した実行の概念がまったく標準のものであることに注意してください(他にも多くの失敗する可能性のある方法と、これは正当なものです)、これは実際にコードが非常に単純になることを意味します。 いずれの場合も、正常に終了するコードと終了するコードの両方を表示します。いずれの場合も、デフォルトの終了コードはゼロであることがわかります。コードでは、ゼロ以外のコードを使用するというだけのことがあります。

これらは時には非常によく似ています(下記のTclとBashコード)。 同じとは思わないでください!彼らはちょうど同じように見える小さな断片かもしれません。より大きなプログラムはほとんど同じではありません。これはちょうど類似点がある場所の1つであることが起こります。特別な条件付き実行のように余分なものを追加すると、構文がかなり違って見えます。

Pythonの

import sys 
# Exit with code for success (default) 
sys.exit() 
import sys 
# Exit with code for failure 
sys.exit(1) 

のTcl

# Exit with code for success (default) 
exit 
# Exit with code for failure 
exit 1 

バッシュ

# Exit with code for success (default) 
exit 
# Exit with code for failure 
exit 1 
関連する問題