首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在perl脚本中检查文件是否存在

问如何在perl脚本中检查文件是否存在
EN

Stack Overflow用户
提问于 2018-02-26 05:30:58
回答 2查看 796关注 0票数 1

我可以使用perl脚本中的if (-e $file)来判断文件是否存在于linux中。

我可以在linux中运行p4 fstat $file来判断文件是否存在于perforce depot中。

但是如何使用perl脚本检查文件是否在perforce depot中呢?

EN

回答 2

Stack Overflow用户

发布于 2018-02-26 05:32:41

您可以在Perl脚本中使用反引号运算符运行命令:

代码语言:javascript
复制
`p4 files $file`

这将作为检查Perforce中是否存在文件的真实检查:

代码语言:javascript
复制
if (`p4 -F %depotFile% files "$file"`)

请注意,这要求您在运行脚本之前登录到Perforce服务器(如果您无法连接,则在上述情况下您将始终得到"false“)。

票数 4
EN

Stack Overflow用户

发布于 2018-02-26 05:49:13

根据所提出的问题,您似乎可以使用Perl的system()或exec()方法运行p4命令,或者如上所述使用"backticks“运算符。

backtics操作符将允许您从命令中捕获STDERR和STDOUT,以便您可以将其用于任何目的。

另外两个将尝试运行该命令并相应地提供返回值,如perldoc -f exec中所述

因此,通常可以执行的命令如下:

代码语言:javascript
复制
p4 files $file

紧接着是

代码语言:javascript
复制
echo $?

第二个命令将获取最后一个shell命令的退出状态。

在使用反引号时,您还可以尝试以下操作:

Windows:command-to-execute 2>NUL

Linux / OSX:command-to-execute 2> /dev/null

这些将抑制STDERR,并且只给出输出。如果您使用"1“而不是"2”,您将取消STDOUT,并且只得到错误。

最后,如果你想两者兼得,你可以使用:

Windows / Linux / macOS:command-to-execute 1>2&

这将连接STDOUT和STDERR。

因此,简而言之,您可以使用Perl在任何操作系统上运行任何现有程序,并且有多种方法可以处理结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48978668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档