Команда Expr возвращает false

Ваш файл /etc/hosts неправильно сконфигурирован. Файл hosts сообщает вашему компьютеру, как разрешать определенные узлы, такие как localhost и имя хоста вашего компьютера. Имя хоста вашего компьютера установлено на jjpg-MS-7788, но ваш файл hosts перечисляет его как jjpg-MS-7788.CASAJJPG. Исправить:

gksudo gedit /etc/hosts

Чтобы открыть файл hosts в текстовом редакторе. Затем просто удалите .CASAJJPG из этой строки, чтобы ваш файл выглядел следующим образом:

127.0.0.1 localhost
127.0.0.1 jjpg-MS-7788
----other lines here, I'm too lazy to copy them for you.
3
задан 18 September 2017 в 19:30

2 ответа

expr не поддерживает числа с плавающей запятой:

Операнды - это целые числа или строки. Целые элементы состоят из одной или нескольких десятичных цифр с необязательным ведущим «-». expr преобразует все, что появляется в позиции операнда, в целое число или строку в зависимости от применяемой к ней операции.

expr :

Операнды - это целые числа или строки. Целые элементы состоят из одной или нескольких десятичных цифр с необязательным ведущим «-». expr преобразует все, что появляется в позиции операнда, в целое число или строку в зависимости от применяемой к ней операции.

expr сначала пытается преобразовать оба аргумента в целые числа и выполнить числовое сравнение; если любое преобразование завершается неудачно, оно выполняет лексикографическое сравнение с использованием последовательности сортировки символов, указанной в локали LC_COLLATE.

expr1 < expr2 The result is 1 if expr1 is strictly less than expr2.

Если вы хотите сравнить поплавки, используйте что-то вроде bc (в котором используется «0» false, 1 является истинным "соглашением):

$ bc <<< '(916.1 < 1024)' 1 $ if [ "$(bc <<< '(916.1 < 1024)')" -eq 1 ]; then echo yes; else echo no; fi yes
12
ответ дан 18 July 2018 в 06:38

expr не поддерживает числа с плавающей запятой:

Операнды - это целые числа или строки. Целые элементы состоят из одной или нескольких десятичных цифр с необязательным ведущим «-». expr преобразует все, что появляется в позиции операнда, в целое число или строку в зависимости от применяемой к ней операции.

expr :

Операнды - это целые числа или строки. Целые элементы состоят из одной или нескольких десятичных цифр с необязательным ведущим «-». expr преобразует все, что появляется в позиции операнда, в целое число или строку в зависимости от применяемой к ней операции.

expr сначала пытается преобразовать оба аргумента в целые числа и выполнить числовое сравнение; если любое преобразование завершается неудачно, оно выполняет лексикографическое сравнение с использованием последовательности сортировки символов, указанной в локали LC_COLLATE.

expr1 < expr2 The result is 1 if expr1 is strictly less than expr2.

Если вы хотите сравнить поплавки, используйте что-то вроде bc (в котором используется «0» false, 1 является истинным "соглашением):

$ bc <<< '(916.1 < 1024)' 1 $ if [ "$(bc <<< '(916.1 < 1024)')" -eq 1 ]; then echo yes; else echo no; fi yes
12
ответ дан 24 July 2018 в 18:38

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

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