Я хотел бы создать скрипт bash, который загружает определенный установщик из интернета, устанавливает его, создает файл рабочего стола, который его запускает, делает его автоматически запускаемым, затем удаляет установщик, но есть несколько вещей, которые я хотел бы, чтобы скрипт проверял. Вот эти вещи:
наличие установщика (если его нет, то загрузите его, в противном случае сделайте его исполняемым)
наличие предыдущей установки (если она существует, то установите ее исполняемый файл деинсталлятора, запустите его и удалите все, что она оставила, в противном случае перейдите к следующему шагу)
состояние пакета gksu через apt list | grep gksu (если он установлен, то перейдите к следующему шагу, иначе установите его) и
вывод gksu example.run (если есть строка "GNOME_SUDO_PASS", то повторите gksu example.run, иначе перейдите к следующему шагу)
решение1
Условие: установщик - ls . | grep example.runchmod +x pelda.run else wget download/link/of/example.run
Насколько я понимаю, вышесказанное переводится как:
if [ -f example.run ]
then
chmod +x pelda.run
else
wget download/link/of/example.run
fi
[ -f example.run ]
пример использования test
команды. Если файл с именем example.run
существует, то тестовая команда устанавливает код возврата 0 (что означает true). Если нет, то она устанавливает код возврата 1 (что означает false).
Условие: gksu - apt list --installed | grep gksu, если !существует, то sudo apt install gksu иначе gksu pelda.run
Если я правильно понимаю вышесказанное, то это означает:
if apt list --installed | grep gksu
then
gksu pelda.run
else
sudo apt install gksu
fi
Здесь мы используем тот факт, что grep
устанавливает код возврата в зависимости от того, находит ли он совпадение или нет. apt list --installed
возвращает список установленных пакетов. Если его вывод где-либо содержит строку gksu
, то grep
устанавливает код возврата 0 (что означает true) и then
выполняется предложение. Если нет, else
выполняется предложение.