如何使用bash脚本检查是否打开了perforce文件

时间:2017-02-27 21:58:10

标签: perforce

所以我运行“p4打开the_file”,它打印状态,但我无法捕获打印:

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

变量a为空。

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

有什么办法吗?

3 个答案:

答案 0 :(得分:1)

将第一行更改为:

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

将stderr重定向到stdout,因此你的变量将捕获正常输出和错误输出。

答案 1 :(得分:1)

如果你这样做:

p4 -s opened file1

所有服务器输出都被发送到stdout,并带有一个标签,上面写着是“错误”还是“信息”(注意,区别在哪里并不总是很明显)。对于你的情况应该得到类似的东西:

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

另一个有趣的全局选项(即它在命令名称之前,与“-s”相同)是“-e”,它为您提供原始错误字典;你可以用这个来做有趣的事情,比如查找特定的错误代码,而不是点击人类可读的消息字符串。

答案 2 :(得分:0)

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

p4 -ztag打开不会为没有打开的文件返回任何内容,因此您只需测试空输出。