Когда эти два значения находятся в переменной, как здесь:
a="09:30:15"
b="13:00:34"
Тогда вы можете использовать это для сравнения этих значений (с ksh93
):
[ "${a//':'}" -lt "${b//':'}" ] && echo "okay" || echo "invalid arguments"
Это использует ksh
расширение параметров ${параметр/паттерн/строка}
. Из manpage:
Расширяет параметр и заменяет самое длинное совпадение шаблона заданной строкой. [...] Каждое совпадение шаблона заменяется заданной строкой.
Таким образом, 09:30:15
расширяется до 093015
, а 13:00:34
до 130434
. Это целые числа, которые можно сравнить с помощью утилиты test
. Из man-страницы:
INTEGER1 -lt INTEGER2 INTEGER1 меньше INTEGER2
Edit: с ksh88
, который не имеет функции ${параметр//шаблон/строка}
, вы должны сначала удалить :
с помощью sed
, а затем сравнить значения:
a="$(printf '%s' "$a" | sed -e 's/://g')"
b="$(printf '%s' "$b" | sed -e 's/://g')"
[ "$a" -lt "$b" ] && echo "okay" || echo "invalid arguments"
Изучив ответы других людей, я думаю, что лучший и наиболее целостный ответ таков: существует ТОЛЬКО три (3 )способа установки пакетов в Linux. И ТОЛЬКО ОДИН из них обеспечивает автоматическую установку всех зависимых пакетов. Это:
apt-get install <package-name>
Вот он! Потом;
dpkg --install <full path to package/package-name.deb>
И, наконец, собрать всё из исходников . Этот последний вариант почти ничем не отличается от использования dpkg . Только вам, возможно, придется проделать некоторую дополнительную работу, чтобы понять «autoconf , automake и тому подобное», чтобы начать работу. Но большинство исходников поставляются с созданным файлом конфигурации automake, и в лучшем случае вам нужно запустить ./configure , чтобы пакет соответствовал архитектуре вашего ПК, make и make install ! Вот оно!
Наконец, в ответ на мой вопрос (s ), это означает, что если кто-то хочет использовать последние два , вы/они должны использовать хорошо сохранившиеся веб-сайты, такие как пакеты. ubuntu.com или другой, чтобы отслеживать все зависимости и рекомендуемые пакеты. Затем установите загруженные зависимости по мере необходимости, поскольку каждый из пакетов в конечном итоге будет установлен (вручную ). В источниках обычно говорится, что у вас установлены сборочные -инструменты . Из них вы можете ответить, смешав методы установки, например, инструменты apt get install build -, которые можно найти в репозиториях Ubuntu, а затем запустить make install для рассматриваемых источников. Таким образом, пропускается необходимость отслеживать и загружать инструменты сборки -и их зависимости вручную.
IIRC, если у вас есть файл.deb с зависимостями, которые можно найти в настроенных репозиториях, вы можете установить его с помощью dpkg -i package.deb
, а затем выполнить apt-get -f install
, и apt добавит все, что нужно вашему пакету... но ТОЛЬКО если соответствующие номера версий и т. д. все существуют и совпадают.
Существует способ сделать это. Это действительно не рекомендуется, но я нашел это полезным, когда мне нужно было установить заброшенный пакет, когда существующие в нем ошибки не мешают мне выполнять мои задачи (, например, если пакет содержит несколько двоичных файлов., но мне нужен только один из них ).
Допустим, у вас есть файл package.deb
. Вы делаете следующее:
ar t package.deb
Затем вы ищете файл, который начинается с data
, чаще всего это будет data.tar.xz
, но иногда можно использовать другое сжатие (или так, я читал ).
Потом бежишь
ar x package data.tar.xz
Обязательно подтвердите, что извлечение произошло, потому что вывода так или иначе не будет.
Может оказаться полезным переместить файл данных в какой-нибудь каталог сам по себе, потому что на следующем шаге мы будем извлекать дерево каталогов, а вы не хотите пытаться выяснить, что вам нужно, а что нет. не нужно после того, как вы закончите.
Теперь распакуйте полученный файл:
unxz data.tar.xz
tar xvf data.tar
Вы найдете файлы, которые будут созданы при установке пакета, но с текущим каталогом в качестве корня. Таким образом, если двоичный файл находится в /usr/bin
, вы найдете его в ./usr/bin
.
После этого вы можете вручную скопировать файлы на нужные места. Или я предпочитаю копировать их в /home/user/bin
и добавлять этот каталог в PATH
. Таким образом, у вас будет немного меньше шансов сломать систему. Конечно, если вы устанавливаете библиотечный пакет, вам нужно будет потратить еще немного времени на выяснение того, что и куда идет.
Опять же, это не лучший способ установки пакетов (, если не сказать больше ). Эта установка затрудняет запоминание того, какой файл был из какого пакета, и поэтому трудно понять, откуда возникает какая-то ошибка. Но, к сожалению, бывают моменты, когда вам нужно "Just Fucking Do It" (tm ).