-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 命令,因为它似乎存在刷新问题(类似于“ Getting another program's output as input on the fly ”)

如果您的脚本正在设置动态视图,则可能会发生这种情况:请参阅“ Python 和 ClearCase setview ”:cleartool setview创建一个子 shell,它可以使输出有点随机。

在 OP 的案例中,patrick报告:

我的问题是由读取变量中隐藏的空白字符引起的:
我的问题是上面提到的脚本从另一个文件中读取变量
一些所说的变量有尾随空格字符,这是原因。

于 2012-06-21T14:58:29.787 回答