Bash

檢查 bash 腳本中是否安裝了無線工具

  • January 8, 2018

我想檢查系統(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似乎不起作用。無論是否安裝了無線工具,都不會返回任何東西。我怎樣才能以不同的方式檢查這個?

我建議檢查二進製文件typehash但是,還有一個專門用於檢查包狀態的工具:

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

如果您願意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’ 內置命令的描述

引用自:https://unix.stackexchange.com/questions/415622