如何以编程方式检查程序是否存在?

发布于 2024-12-07 19:52:52 字数 216 浏览 0 评论 0原文

假设我正在编写一些依赖于外部程序的东西,例如 svn。如何自动检查它们是否存在,以便在它们不存在时打印有用的错误消息?迭代PATH是可能的,但很难优雅和高效。有更清洁的解决方案吗?

我在引导脚本中看到过这种行为,但我不记得在哪里。它看起来有点像这样:

checking for gcc... yes

Let's say I'm writing something that depends on external programs, like svn. How do I check for their existence automatically, so I can print a helpful error message when they're absent? Iterating through PATH is possible, but hardly elegant and efficient. Are there cleaner solutions?

I've seen this behavior in a bootstrapping script, though I can't remember where. It looked a little like this:

checking for gcc... yes

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可爱咩 2024-12-14 19:52:52

如果您使用的是 bash,则可以使用内置的 type

$ type -f svn
svn is /usr/bin/svn

如果您想在脚本中使用它:

$ type -f svn &>/dev/null; echo $?
0
$ type -f svn_doesnt_exist &>/dev/null; echo $?
1

If you are using bash, you can use the type builtin:

$ type -f svn
svn is /usr/bin/svn

If you want to use it in a script:

$ type -f svn &>/dev/null; echo $?
0
$ type -f svn_doesnt_exist &>/dev/null; echo $?
1
祁梦 2024-12-14 19:52:52

尝试实际调用它。

使用 -V 或任何其他使程序报告其版本的选项来调用它是最有意义的;大多数时候你希望程序至少是这样那样的版本。

如果您的程序是 shell 脚本,那么 which 也是您的朋友。

Try to actually call it.

It makes most sense to call it with -V or whatever else option that makes the program report its version; most of the time you want the program to be at least such-and-such version.

If your program is a shell script, which is your friend, too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文