Сравнение строки значением плавающего числа к числу

Я не думаю, что можно легко добавить диапазоны, но я думаю (не может протестировать это прямо сейчас), что тот же эффект может быть достигнут путем добавления следующего к .ssh/ssh_config:

Host *.github.com
HostKeyAlias github-server-pool.github.com

Затем, Вы добавили бы ключ к known_hosts файлу под именем github-server-pool.github.com.

Предположение: хост github-server-pool.github.com не существует или никогда не подключается с через SSH.

Идея позади него, то, что ssh будет использовать ключевой github-server-pool.github.com в качестве ключа к поиску общедоступный ключ хоста для всех хостов домена github.com.

3
11.07.2014, 23:17
2 ответа
[

]Bash не может выполнять сравнение с плавающей запятой. Вам нужно обратиться к другому инструменту, здесь я показываю []bc[] входные данные для чтения из строки bash []here-string[].[

] [

]Используйте команду []read[] для извлечения полей из строк вашего файла вместо того, чтобы вызывать []cut[] несколько раз.[

] [

]Вы не можете вставить двойные кавычки внутри строки с двойными кавычками, не экранируя их. Используйте []printf[] для того, чтобы сделать кавычки немного проще.[

] [
#!/bin/bash
while IFS=: read dri nu tot fre rest_of_line; do
    if [[ $(bc <<< "$fre > 2") == "1" ]]; then
        color=81F781
    else
        color=B40404
    fi
    printf '<td align="Center" bgcolor="#%s">%s</td>' $color $fre >>mailbody.html
done <  output_10.txt
]
3
27.01.2020, 21:23
 [ $fre > 2 ]

Это [ $fre ] с (пустым) выходом, перенаправленным в файл 2. Помните, что символ > вводит выходное перенаправление.

Используйте оператор -gt для выполнения числового сравнения: [ "$fre" -gt 2 ]. (Кстати, всегда используют двойные кавычки вокруг подстановок переменных, если не понимаете, почему их нужно пропустить). У Бэша также есть синтаксис [[ ... ]], где > разбирается как оператор сравнения, а не как перенаправление, но этот оператор выполняет лексикографическое сравнение, т.е. сравнивает строки, поэтому 9 > 10.

Бэш не поддерживает плавающую точку. Вы можете вызвать внешнюю программу, например bc. В качестве альтернативы можно использовать специальный способ сравнения десятичного числа с целым числом:

fre_int=${fre%.*} # truncate the part after the decimal point
if [ "$fre_int" -ge 2 ] && [ "$fre" != 2 ]; then …
0
27.01.2020, 21:23

Теги

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