Linux查找二进制文件

时间:2012-01-26 05:26:21

标签: linux bash shell

我试图在Linux系统中使用以下内容找到二进制文件:

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

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

由于

3 个答案:

答案 0 :(得分:6)

更新

经过一番思考,没有理由使用[[ ]](或[ ]来解决这个问题)。甚至没有理由使用命令替换$()

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

如果您使用的是bash,请使用[[ ]]构造。其中一个好处(许多)是它没有这个问题

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

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

答案 1 :(得分:3)

if [ `which "$1"` != "" ]; then

which在找到二进制文件时不会返回""

答案 2 :(得分:1)

我喜欢'hash'这个(如果你是一个bash用户......)(实际上它的行为比它更容易)

hash blahblah

bash:hash:lklkj:not found

hash /bin/ls <-- silently successful

此方法在Linux和OSX上的工作方式类似,其中“哪个”具有不同的行为。