【发布时间】:2013-04-09 18:46:07
【问题描述】:
我使用 Perl 脚本在 ClearCase 上的多个 VOB 中为多个用户运行命令。我有一个从文本文件中读取的 VOB 列表。然后我在该列表上循环并执行我想要执行的任何 ClearCase 命令。但是,这一次脚本似乎不起作用。如果我将命令打印到屏幕上,然后在提示符处复制并粘贴它,它工作正常。它只是不会从 Perl 脚本中执行。我看到的唯一区别是 fmt 字符,但即使我删除它也不会执行。我尝试首先将 fmt 直接放在线上,然后尝试将它们设置为变量。你会看到第一个注释行是失败的,但我把它留在那里作为我尝试过的一个例子。最后两个 cmets 来自我这样运行的另一个脚本,它确实有效。
代码:
#! /usr/local/bin/perl -w
use strict;
open(VOBS,"vobs.txt") || die "Can't open: !$\n";
my $u = '%u';
my $a ='%Ad';
my $n ='%N/n';
my $user='john';
my $ct = '/usr/atria/bin/cleartool';
while(my $newvobs=<VOBS>){
chomp($newvobs);
my $tag = $newvobs;
print "\n $tag \n";
print " $ct lstype -kind brtype -invob $tag | grep $user ";
`$ct lstype -kind brtype -invob $tag | grep $user`;
# `/usr/atria/bin/cleartool lstype -kind brtype -invob $tag -fmt '%u %Ad %N/\n' `;
# print "\n cleartool rmtag -view $tag \n";
#`/usr/atria/bin/cleartool rmtag -view $tag `;
}
close(VOBS);
【问题讨论】:
-
cleartool 命令需要用户交互?还是平稳运行?
-
它会顺利运行 我会在运行时实际生成一个 txt 文件的输出,我发送给用户让他们决定要删除哪些分支。
-
在这种情况下,“|grep $user”部分应该被删除,它对命令结果没有贡献
-
@Carole 您可以添加任何错误消息吗?
-
是的,我有打印,所以我可以看到我所在的vob,然后我可以看到它应该执行的命令,然后它应该执行。但是,从屏幕上我只得到两个这样的打印语句: