私はインストールスクリプトを使用します。以下は2つのインストールコマンドです。
function InstallChrome()
{
if ( which google-chrome 1>/dev/null ); then
echo "Chrome is installed"
return
fi
echo "Installing Google Chrome ..."
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O chrome
sudo dpkg -i chrome
echo "Installed Google Chrome"
}
したがって、デフォルトでインストールされているプログラムを検索し、apt
プログラムがある場合はコマンドを実行しませんapt
。
apt
その理由は、小切手を受け取るよりもはるかに速いからです。
ただし、このコードは機能しません。
function InstallSshServer()
{
if ( which openssh-server 1>/dev/null ); then
echo "SSH Server is installed"
return;
fi
echo "Installing SSH Server ..."
sudo apt install openssh-server -y
echo "Installed SSH Server"
}
openssh-server
マイコンピュータにインストールされているプログラム名は何ですか?インストールされていることを確認する方法は?
答え1
openssh-server
インストール/usr/sbin/sshd
、あなたはそれを見つける必要があります。パッケージは必ずしも同じ名前のバイナリをインストールする必要はなく、パッケージがインストールするバイナリが必ずしもすべてのユーザーのパスにある必要はありません。したがって、明示的に:
[ -x /usr/bin/sshd ] || sudo apt install -y openssh-server
dpkg -L
パッケージがインストールされると、パッケージがインストールされているファイルが何であるかがわかります。次のコマンドを使用してバイナリを一覧表示できます。
dpkg -L openssh-server | grep bin/
apt-file list
パッケージを最初にインストールしなくても、パッケージとしてインストールされたファイルが表示されます。
記述子として、「which」を使わないのはなぜですか?それでは何を使うべきですか?スクリプトに役立つ資料を提供します。
答え2
私は何をしますか?強く打つ:
if ! type -p sshd &>/dev/null; then
sudo apt-get install -y openssh-server
fi
答え3
以下は、同様のケースについて私が書いた小さなスクリプトを修正したものです。
#!/bin/bash
prompt_confirm() {
while true; do
read -r -n 1 -p "${1:-} [y/n]: " REPLY
case ${REPLY} in
[yY]) echo ; return 0 ;;
[nN]) echo ; return 1 ;;
*) printf " \033[31m %s \n\033[0m" "Incorrect input, please type y (yes) ou n (no)."
esac
done
}
# Check if openssh-server is installed
if ! command -v sshd &> /dev/null
then
echo -e "\nThe openssh-server is not installed."
if prompt_confirm "Would you like to install it now?";
then
apt install -y openssh-server
else
echo -e "\nOk, quitting.\n"
exit
fi
fi
もちろん、y / nプロンプトなしでチェック部分を使用することもできます。
command -v
システムでコマンドが使用可能かどうかをテストするための推奨方法です。