测试unix中是否存在可执行文件

时间:2014-02-15 15:18:43

标签: shell unix zsh

问题

我的thing可能有也可能没有可执行文件$PATH

如何在ZSH脚本中整齐地检查这个?

现有尝试

我只是运行命令,发送输出和错误或noman的土地,然后检查结果代码。

thing > /dev/null 2>&1
thing_installed=$?
if [ $thing_installed -eq 0 ]; then
    echo 'Thing Installed!'
fi

我觉得这可以做得更整齐(一个班轮?)。

4 个答案:

答案 0 :(得分:5)

在zsh中,which行为合理,所以你可以简单地执行

if which thing > /dev/null 2>&1; then
    echo installed
fi

which thing > dev/null 2>&1 && echo installed

请注意,哪个是内置shell,并且它在所有shell中的行为合理,因此无法依赖此行为。

答案 1 :(得分:1)

对于zsh whence是您正在寻找的工具。使用参数-p,可以强制它仅查看$PATH并忽略具有相同名称的函数,内置函数和别名。

这将返回thing的路径或错误消息:

whence -cp thing

答案 2 :(得分:0)

使用which thing并检查结果代码

答案 3 :(得分:-4)

您可以通过此表达检查文件是否存在:

[ -e thing ] && echo 'Thing Installed!'

-e运算符检查文件是否存在。如果您想进行其他文件测试,请查看此页面:http://tldp.org/LDP/abs/html/fto.html

希望这有用; - )