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

Необходимо использовать базовый класс, если действительно нет никакой причины для других разработчиков требовать использовать их собственный базовый класс в дополнение к участникам типа , и Вы предвидите проблемы управления версиями (см. http://haacked.com/archive/2008/02/21/versioning-issues-with-abstract-base-classes-and-interfaces.aspx ).

, Если у наследовавшихся разработчиков есть какая-либо причина использовать их собственный базовый класс для реализации интерфейса типа и Вы не видите, что интерфейсное изменяется, затем пойдите с интерфейсом. В этом случае можно все еще добавить базовый класс по умолчанию, который реализует интерфейс ради удобства.

2
задан 17.05.2020, 19:13

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

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

2
ответ дан 17.05.2020, 19:14
  • 1
    Очень положительная сторона у использования ' версия 1.0' вместо ' 1.0' таким образом, я изменяю свой код! – Kaushal 17.05.2020, 19:14
  • 2
    @HarlemSquirrel не стесняются отправлять Q, если Вам нравится, и I' d быть рад объяснить этот конкретный более подробно в случае необходимости. Что касается &&, который может использоваться в сценарии, that' s, как я обычно делаю это, но да, не для больших блоков. Я, конечно, не использовал бы grep -c 1.0, хотя, потому что это будет также соответствовать version 0.8.1.0, например, и это будет соответствовать 1.0 независимо от того, является ли это на самом деле даже частью строки версии. Например version 0.7 revision 1.0. – DiPix 17.05.2020, 19:14
  • 3
    Спасибо за предложения, terdon! Одна проблема я вижу с использованием & & это, мне нужен этот код, чтобы быть частью большего сценария, таким образом, мне нужны вещи пройти, если BleachBit установлен или нет. Так, в моих целях, я won' t используют & &. мне нравится Ваша идея использовать awk для составления будущих версий, но мне было нелегко понимать, как использовать awk; I' m все еще новичок сценариев! – nuvio 17.05.2020, 19:15

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

#!/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
1
ответ дан 17.05.2020, 19:13

Теги

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