Как я могу написать скрипт для установки BleachBit, только если установленная версия не является определенной версией?

Я хочу написать bash-скрипт для загрузки и установки BleachBit из файла .deb, только если уже установлена ​​версия не 1.0. Я использую Ubuntu 12.04, а Bleachbit только официальная версия 0.9 в официальных репозиториях, и я не могу найти PPA с версией 1.0 для Ubuntu Precise. Как я могу это сделать?

2
задан 26 March 2014 в 20:03

2 ответа

Вот более простая версия Вашего сценария, (сохранение в целости юмора:)):

#!/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

, Но это прибывает за счет бедных эльфов.

0
ответ дан 26 March 2014 в 20:03

Я поместил этот короткий сценарий вместе, который, кажется, работает на меня! Это также включает немного моего собственного бренда волшебного юмора. Я использую этот код в большем сценарии, таким образом, я могу скопировать и вставить это условное выражение где угодно, мне нужен он.

#!/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
0
ответ дан 26 March 2014 в 20:03

Другие вопросы по тегам:

Похожие вопросы: