我想检查系统(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 command
bash:
命令:命令 [-pVv] 命令 [arg ...]
执行简单的命令或显示有关命令的信息。
运行带有 ARGS 的 COMMAND,抑制 shell 函数查找,或显示有关指定 COMMAND 的信息。当存在同名函数时,可用于调用磁盘上的命令。
选项:
[...]
- -v 打印命令的描述,类似于内置的“type”