-4

順不同の出力を生成するbashスクリプトに問題があります。
このスクリプトは複数の場所で使用され、通常は正常に機能します。

ただし、ある特定のディレクトリでは、すべてが同期しなくなり、出力ファイルが役に立たなくなります。
ディレクトリ構造は同一であり、必要な入力データは非常に似ています。(それが違いを生む場合は、ClearCaseで作業します。)

bashが機能している場合、その出力は次のようになります。

Techpack Meta Version is currently 3, has this changed? y/n n
Have Techpack Version Dependencies changed? y/n n
Updating Version Properties

Building TPI File
Inside make_tpi_file
Created ../package/12.0/M_E_LCHS_DATAGEN_R0E_b1.tpi
Checked out "package/12.0/" from version "/main/at_job/1".
Created element "package/12.0/M_E_LCHS_DATAGEN_R0E_b1.tpi" (type "compressed_file").
Created branch "at_job" from "package/12.0/M_E_LCHS_DATAGEN_R0E_b1.tpi" version "/main/0".
Checked out "package/12.0/M_E_LCHS_DATAGEN_R0E_b1.tpi" from version "/main/at_job/0".
Checked in "package/12.0/M_E_LCHS_DATAGEN_R0E_b1.tpi" version "/main/at_job/1".
Checked in "package/12.0/" version "/main/at_job/2".

bashが機能していない場合、その出力は次のようになります。

Techpack Meta Version is currently 3, has this changed? y/n n
Have Techpack Version Dependencies changed? y/n n
Updating Version Properties

Building TPI File
Inside make_tpi_file
_R0E_b1.tpipackage/12.0/M_E_HANF_DATAGEN
Checked out "package/12.0/" from version "/main/at_job/4".
_R0E_b1.tpi" (type "compressed_file").A_DATAGEN
_R0E_b1.tpi" version "/main/0".package/12.0/M_E_HANF_DATAGEN
_R0E_b1.tpi" from version "/main/at_job/0".
_R0E_b1.tpi" version "/main/at_job/1".GEN
Checked in "package/12.0/" version "/main/at_job/5".

/vobs/job/job_mg/test_tools/Data_Generator/HANF/FeatureTest/build
Checked in "install/version.properties" version "/main/at_job/14".
Checked in "../package/12.2/build.number" version "/main/at_job/4".

一般に、bashスクリプトがそのような壊れた出力を生成する原因は何でしょうか?
多くのディレクトリで問題なく動作することを考えると、問題はコード自体にあるのではなく、スクリプトによって読み取られるデータにあると思います。

4

2 に答える 2

6

真剣に、スクリプトの出力だけを見ながらスクリプトをデバッグすることを期待していますか?

それはかなり難しい注文です。

それでも、私の推測では (スクリプトが何をしているのかわからないので、推測以上のものではないことに注意してください)、スクリプトのステップが互いに依存しているが、そうではないある種の競合状態になるでしょう。強制的に同期され、予期しない順序で完了すると失敗します。

「コードがどこかからコピーされた」という理由でエラーが発生しないはずだと言うのも、まったくとんでもないことです。

于 2012-06-21T11:32:58.163 に答える
0

注:スクリプトが実行することになっていることは次のとおりです。

  • tpiファイルの親ディレクトリをチェックアウトします
  • 要素(ファイル)を作成しますtpi(cleartool mkelem
  • その(新しい空の)要素をチェックアウトする
  • (そのコンテンツは、ビルドされている実際のtpiファイルによって上書きされます)
  • そのファイルをチェックインする
  • 親ディレクトリを確認しています。

フラッシュの問題があるように見えるため、bashスクリプトがclearcaseコマンドをどのように呼び出しているかを確認する必要があります(「別のプログラムの出力をオンザフライで入力として取得する」と同様)

これは、スクリプトが動的ビューを設定している場合に発生する可能性があります。「PythonおよびClearCase setview」を参照してください。はサブシェルcleartool setviewを作成します。これにより、出力が少しランダムになる可能性があります。

OPの場合、パトリックは次のように報告します。

私の問題は、読み取り変数の非表示の空白文字が原因で発生しました。
私の問題は、上記のスクリプトが別のファイルから変数を読み取ることでした。
上記の変数の一部には、原因である末尾の空白文字が含まれていました。

于 2012-06-21T14:58:29.787 に答える