Я нахожусь в процессе написания сценария установки для программы на bash. Первая часть установки определяет, установлена ли программа уже или нет. Это обнаруживается по наличию файла в указанном каталоге. Эта часть отлично работает. Однако я хочу, чтобы пользователь мог обновиться до новой версии, если старая версия существует. Я думал, что у меня был правильный код, но он не совсем работает. В / var / www / html / gvsms есть файл с именем .version, в котором просто есть версия программы. Я хочу сравнить это число с номером установщика. Я не уверен, как, однако, внутри утверждения if. Может ли быть несколько If внутри If? Это то, что я до сих пор:
$installerver=1.1
$installedver=${cat /var/www/html/gvsms/.version}
echo "Installation beginning...."
echo " "
echo " "
echo -n "Checking to see if GVoice SMS Notification System was previously installed..."
if [ -a /var/www/html/gvsms/index.php ]; then
echo "Yes."
echo ""
echo "I have detected a previous installation of GVoice SMS Notification System."
if [ $installerver == $installedver ]; then
echo "The GVoice SMS Notification System is currently installed and is the same version as this installer. If you were trying to upgrade, please check the installer you downloaded and try again."
exit
fi
elif [ $installedver == "0.5" || $installedver == "1.0"]; then
while [[ "$yn" != "Yes" && "$yn" != "Y" && "$yn" != "y" && "$yn" != "yes" ]]; do
echo "Would you like to upgrade? Yes or no."
read -r upgrade
echo "$upgrade upgrade?"
echo "Is this correct? (Yes or No)"
read yn
done
echo "Upgrade proceeding..."
fi
echo "No."
echo "I have not detected a previous installation of GVoice SMS Notification System."
read -p "To proceed with installation at your own risk, press Enter. Otherwise Ctrl-C."
В настоящее время ошибки программы:
./test.x: line 1: =1.1: command not found
./test.x: line 2: ${cat /var/www/html/gvsms/.version}: bad substitution
Способ работы программы заключается в том, что если файл обнаружен, установленная версия не совпадает (или меньше) с установщиком, и пользователь говорит «да» для обновления, команды обновления должны выполняться. Если пользователь говорит «нет» для обновления, выйдите из сценария.
Если программа установлена и имеет ту же версию, что и установщик, отобразить сообщение об ошибке и выйти.
Если программа еще не установлена, пропустите повторную установку и продолжите обычную установку.
Возможно ли это?
Спасибо!