Linux 查找二进制文件

标签 linux bash shell

我正在尝试使用类似这样的方法在 Linux 系统中查找二进制文件:

if [ -f `which $1` ] then
    echo "File Found"
else
    echo "File not Found"
fi

虽然代码工作正常,但问题是“which”将返回空运算符,BASH 将其解释为存在的东西,因此文件总是会找到。任何建议都会很棒。

谢谢

最佳答案

更新

经过深思熟虑,没有理由使用 [[ ]](或 [ ])。甚至没有理由使用命令替换 $()

if which "$1" > /dev/null 2>&1; then
  echo "found"
else
  echo "not found"
fi

如果您使用的是 bash,那么请使用 [[ ]] 结构。好处之一(在众多好处中)是它没有这个问题

[[ -f $(which $1) ]] && echo found

此外,`` 已被弃用,请改用 $()

关于Linux 查找二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014262/

相关文章:

bash - 如果字符出现少于 20 次,则从列中删除字符

bash - 如何在stdout中延迟直播?

bash - Bash 脚本中的字符串比较未按预期工作

linux - 无法使用 ceph-deploy : Error EACCES: access denied 部署 Ceph 管理器守护进程

linux - 如何在 linux 中读取正在运行的进程的线程组 ID

php - Drupal 网站被黑了,但找不到源代码?

macos - 打开ssh连接并在启动时保持打开状态

mysql - 如何在 debian 中安装 mysql-server :buster using script without being asked any configuration questions?

bash - 如何通过正则表达式重命名批量文件?

linux - 在 x86_64 程序集中获取终端列和行