AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 538667
Accepted
Stan
Stan
Asked: 2013-09-14 03:55:29 +0800 CST2013-09-14 03:55:29 +0800 CST 2013-09-14 03:55:29 +0800 CST

Unix如何判断一个程序是否可以执行

  • 772

我正在编写一个脚本来创建源环境。处理 PATH 部分很容易。虽然我应该如何检查将路径添加到 PATH 中的程序是否可以正确执行?使用which是不够的,因为它只是检查可执行文件的存在,而不是运行它。我现在得到的是检查程序的版本(即find -version)并检查返回消息是否包含“ command not found”。这并不理想。有一个更好的方法吗?

unix
  • 2 2 个回答
  • 70 Views

2 个回答

  • Voted
  1. Best Answer
    user9517
    2013-09-14T04:37:18+08:002013-09-14T04:37:18+08:00

    我认为没有理想的方式来做你想做的事。正如马丁所说,您可以检查可执行位是否已设置,但这并不能确认它是否会实际运行。

    您可以做的一件事是尝试运行程序,而不是从程序本身中查找特定文本,而是查看$?变量。这将返回程序的退出状态(通常为 0 表示 OK)或(在 CentoOS 系统上我必须手头)127 表示找不到文件,例如

    find --version
    if [[ $? == 127 ]]
    then
        exit 1
    fi
    

    没有理想方法的原因是 OK 的退出状态为 0 只是常规的,如果程序运行但遇到错误,它们可能会返回不同的退出状态。这可能对您有用,直到某些东西运行并返回退出状态 127 以指示某些错误情况。

    • 2
  2. Martin
    2013-09-14T04:26:15+08:002013-09-14T04:26:15+08:00

    您可以使用-x 运算符来测试是否在文件上设置了可执行标志。它不会告诉您可执行文件是否会真正运行。

    • 1

相关问题

  • Windows 有符号链接吗?

  • 控制 UNIX 目录内容用户组所有权

  • 在命令行上从 csv 文件中过滤带有空格字符的字段

  • 如何将 VAR 从子 shell 导出到父 shell?

  • 查找文件大小(以 MB 为单位)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve