Я хочу написать bash-скрипт для загрузки и установки BleachBit из файла .deb, только если уже установлена версия не 1.0. Я использую Ubuntu 12.04, а Bleachbit только официальная версия 0.9 в официальных репозиториях, и я не могу найти PPA с версией 1.0 для Ubuntu Precise. Как я могу это сделать?
Вот более простая версия Вашего сценария, (сохранение в целости юмора:)):
#!/bin/bash
## The && means that the script will run the next command only if this one
## succeeds, in other words, only if the string `version 1.0` is found.
bleachbit --version | grep -q 'version 1.0' &&
echo "$(tput setaf 2)The elves have verified the BleachBit version.$(tput sgr0)" &&
exit 0
## This block will only be executed if the grep above failed
wget -P ~/Downloads http://katana.oooninja.com/bleachbit/sf/bleachbit_1.0_all_ubuntu1204.deb &&
sudo dpkg -i ~/Downloads/bleachbit_1.0_all_ubuntu1204.deb &&
echo "$(tput setaf 2)The elves have installed BleachBit 1.0.$(tput sgr0)"
Примечание, которое я добавил &&
до конца каждой команды, того пути, Вы избежите ошибок, если какой-либо сбой команд начиная со сценария выйдет на первой неудавшейся команде.
А более безопасный подход должен был бы изменить первую команду на:
bleachbit --version | awk '/version/{if($NF>=1){exit 0}else{exit 1}}'
Это имеет преимущество, что оно будет хорошо работать для будущих версий, когда номер версии будет больше, чем 1
. $NF
в awk
означает, что последнее поле и /version/
означает, что сценарий будет работать на строках, соответствующих version
. Так, так как первая строка:
info: starting BleachBit version 1.0
awk
протестирует, больше ли последнее поле (1.0
) здесь, чем или равно одному и выйдет с 0
состояние (успех), если это - что означает, что следующий блок (&&
) будет выполняться, и Ваш сценарий остановится.
Вы могли также уплотнить всю вещь к:
bleachbit --version | head -n 1 | awk '{if($NF>=1){exit 1}else{exit 0}}' &&
wget -P ~/Downloads http://katana.oooninja.com/bleachbit/sf/bleachbit_1.0_all_ubuntu1204.deb &&
sudo dpkg -i ~/Downloads/bleachbit_1.0_all_ubuntu1204
, Но это прибывает за счет бедных эльфов.
Я поместил этот короткий сценарий вместе, который, кажется, работает на меня! Это также включает немного моего собственного бренда волшебного юмора. Я использую этот код в большем сценарии, таким образом, я могу скопировать и вставить это условное выражение где угодно, мне нужен он.
#!/bin/bash # Check BleachBit Version and install if necessary if [ "$(bleachbit --version | grep -c 'version 1.0')" = "0" ]; then wget -P ~/Downloads http://katana.oooninja.com/bleachbit/sf/bleachbit_1.0_all_ubuntu1204.deb sudo dpkg -i ~/Downloads/bleachbit_1.0_all_ubuntu1204.deb echo "$(tput setaf 2)The elves have installed BleachBit 1.0.$(tput sgr0)" else echo "$(tput setaf 2)The elves have verified the BleachBit version.$(tput sgr0)" fi