检查 bash 脚本中是否安装了 wireless-tools

检查 bash 脚本中是否安装了 wireless-tools

我想检查系统(debian)上是否安装了wireless-config(for )。iwconfig如果没有,则使用apt-get.我的 bash 脚本如下所示:

if ! hash wireless-tools 2>/dev/null; then
   apt-get install wireless-tools; 
else
   echo "wireless-tools is installed"
fi

大问题:hash wireless-tools似乎不起作用。无论是否安装了无线工具,都不会返回任何内容。我如何以不同的方式检查这一点?

答案1

我建议type检查hash二进制文件。不过,还有一个专门用于检查包状态的工具:

if ! dpkg-query -s wireless-tools 1> /dev/null 2>&1 ; then
    echo "Package wireless-tools is not currently installed."
else
    echo "Package wireless-tools is currently installed."
fi

答案2

如果您愿意iwconfig,更可持续的长期解决方案(例如,如果您要切换包管理器或发行版)是检查您实际想要使用的二进制文件。您可以使用 POSIXly 来执行此操作command -v

if command -v iwconfig >/dev/null; then
    echo 'iwconfig present'
else
    echo 'iwconfig absent'
fi

来自help commandbash:

命令:命令 [-pVv] 命令 [arg ...]

执行简单的命令或显示有关命令的信息。

运行带有 ARGS 的 COMMAND,抑制 shell 函数查找,或显示有关指定 COMMAND 的信息。当存在同名函数时,可用于调用磁盘上的命令。

选项:

[...]

  • -v 打印命令的描述,类似于内置的“type”

相关内容