我使用以下代码从perl脚本执行ClearCase语句“Accept”。
$acceptA = `accept $Component`;
执行后,在我的perl脚本中,$acceptA
的值为空。
执行此行期间屏幕上显示的文字是:“错误您无权接受此项工作。”
我如何阅读此行?我以为它会像“cleartool checkin”命令那样返回变量$acceptA
?
答案 0 :(得分:1)
由于我不知道ClearCase以及它如何接受,我只能猜测。看到它是如何是一条错误消息,它可能被写入STDERR而不是STDOUT,并且反引号只捕获执行命令的STDOUT。 在这种情况下,将命令STDERR重定向到STDOUT将起作用。尝试
$acceptA = `accept $Component 2>&1`
并查看在出现错误时是否也能捕获输出。
答案 1 :(得分:1)
我最终将SYSERR重定向到我可以读/写的输出文件。
打开STDERR,“> /ellipse/el6.3.3_ry_sup/src/0/$logfile”
作为系统命令的一部分在屏幕上显示的所有错误消息都进入了$ logfile。
我还可以使用以下内容添加到SYSERR: print STDERR“\ nAccepting $ Component”;
感谢所有帮助。