所以我运行“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
”并搜索“未打开”。
有什么办法吗?
答案 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打开不会为没有打开的文件返回任何内容,因此您只需测试空输出。