Bash-скрипт if-else условия

Bash-скрипт if-else условия

Я хотел бы создать скрипт 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выполняется предложение.

Связанный контент