Сравнение шестнадцатеричных строк DASH

У меня была подобная проблема с ssh. В моем случае проблема состояла в том, что я установил hadoop cloudera (от об/мин на песнях 6), и он создал пользователя hdfs с корневым каталогом

/var/lib/hadoop-hdfs (не стандартный /home/hdfs).

Я изменился в/etc/passwd /var/lib/hadoop-hdfs кому: /home/hdfs, перемещенный корневой каталог к новому местоположению и теперь я могу соединиться с аутентификацией с открытым ключом.

2
26.09.2015, 23:55
2 ответа

Вы всегда можете использовать printf для преобразования в десятичную величину и сравнить это, как @ott-- предложил:

[ $(printf "%d" "$hex_string_1") -eq $(printf "%d" "$hex_string_2") ] && echo y

Или

if [ $(printf "%d" "$hex_string_1") -eq $(printf "%d" "$hex_string_2") ]
then
    echo y
fi
2
27.01.2020, 21:56

Подробнее о комментарии @ Graeme.

Загруженный сценарий - это сценарий bash со встроенным тарболом. Часть сценария сначала проверяет tarball по md5sum, а затем распаковывает tar, который содержит несколько архивов .tar.bz2 . Затем для распаковки архивов используется пользовательская функция extract _ dist () . Т.е.:

extract_dist python-2.7.10-0
extract_dist conda-3.14.1-py27_0
...

извлекает файлы:

python-2.7.10-0.tar.bz2
conda-3.14.1-py27_0.tar.bz2
...

Для 32-разрядной версии часть скрипта может быть извлечена:

head -n 467 Anaconda-2.3.0-Linux-x86.sh

Для 64-разрядной версии часть скрипта может быть извлечена:

head -n 466 Anaconda-2.3.0-Linux-x86_64.sh

Как видно, часть скрипта заканчивается на exit 0 , который прерывает любую дальнейшую обработку скрипта bash

Tarball извлекается с помощью:

tail -n +469 $THIS_PATH | tar xf - --no-same-owner
tail -n +468 $THIS_PATH | tar xf - --no-same-owner

для 32-разрядных и 64-разрядных соответственно.

Можно, например, сделать

tail -n +469 Anaconda-2.3.0-Linux-x86.sh | tar -t

, чтобы перечислить файлы в 32-разрядном архиве.

-121--61325-

Проблема решена путем удаления подчеркивания из значения HOSTNAME из/etc/pve/nodes/pve/openvz/130.conf.

-121--289372-

POSIXly:

[ "$((hex_string_1))" -eq "$((hex_string_2))" ]

Для старых версий тире необходимо:

[ "$(($hex_string_1))" -eq "$(($hex_string_2))" ]

POSIXly, About:

[ "$hex_string_1" -eq "$hex_string_2" ]

Спецификация POSIX для [ aka test utility говорит, что операнды должны быть целыми числами, без указания, какие формы целых чисел (десятичные, восьмеричные, шестнадцатеричные...) должны поддерживаться, но это на самом деле рассматривается в пункт 6 в Utility Argument , который указывает, что будет использоваться по умолчанию, если нет

6. если не указано иное, всякий раз, когда операнд или параметр-аргумент является или содержит числовое значение:

  • Число интерпретируется как десятичное целое число.
  • Цифры в диапазоне от 0 до 2147483647 синтаксически распознаются как числовые значения.
  • Если в описании утилиты указано, что она принимает отрицательные числа в качестве операндов или аргументов опции, цифры в диапазоне от -2147483647 до 2147483647 синтаксически распознаются как числовые значения.
  • Допустимы диапазоны, превышающие указанные здесь.

На практике [0x10 -eq 16] работает только с posh ( [0x1-eq 0x01 ] работает в AT & T ksh (но только потому, что они рассматриваются как 0 , [0x2-eq 0x123] также возвращают значение true), и за исключением posh (где ошибка ), все реализации [ возвращают значение false на [010 -eq 8] (как в 010 рассматривается как десятичная, а не восьмеричная)).

В ksh93 , хотя вы не можете сделать [0x10 -eq 16] , вы можете сделать [+ 0x10 -eq 16] (также с posh ). В производных AT & T ksh и pdksh (включая posh ) можно также выполнить ['16 # 10' -eq 16] .

3
27.01.2020, 21:56

Теги

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