2017-02-27 126 views
0

打开,这样我跑“P4打开the_file”,它打印的状态,但我不能捕获打印:如何检查是否一个Perforce文件使用bash脚本

$ a=`p4 opened file1` 
file1 - file(s) not opened on this client. 
$ echo $a 

变量是空的。

我想要的是,我可以找到字符串“file(s) not opened on this client”并搜索“未打开”。

任何方式来做到这一点?

回答

1

更改第一行:重定向标准错误到标准输出,让您的变量将捕获正常输出和错误输出

a=`p4 opened file1 2>&1`. 

1

如果你这样做:

p4 -s opened file1 

所有服务器输出被发送到标准输出和一个标签说无论是“错误”或“信息”为前缀(注意,这其中的区别并不总是显而易见)。对于你的情况,应该让你这样的:

error: file1 - file(s) not opened on this client. 
exit: 0 

另一个有趣的全局选项(即它的命令名称前面去,同为“-s”)是“-e”,它给你的原始错误快译通;你可以用这种方式做一些有趣的事情,比如寻找一个特定的错误代码,而不是查看人类可读的消息字符串。

0
if [[ -z "$(p4 -ztag opened $myfile)" ]]; then echo "Not opened"; fi 

p4 -ztag打开不会返回任何文件不打开,所以你可以测试空输出。

相关问题