The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Преобразование типов в Bash-скрипте"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Преобразование типов в Bash-скрипте"
Сообщение от Danger Dancer emailИскать по авторуВ закладки on 22-Янв-03, 17:28  (MSK)
Моя задача - в файле содержится только цифра в формате Х.Х
Нужно вытащить её из файла и сравнить с другой цифрой
Но командой cat она вытаскивается как строка. Как её преобразовать в нецелое число? Или как сравнить строки (по идее цифры в кодах символов идут последовательно, поэтому должно подойти)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Преобразование типов в Bash-скрипте"
Сообщение от vnp emailИскать по авторуВ закладки on 22-Янв-03, 21:27  (MSK)
>Моя задача - в файле содержится только цифра в формате Х.Х
>Нужно вытащить её из файла и сравнить с другой цифрой
>Но командой cat она вытаскивается как строка. Как её преобразовать в
>нецелое число?

Нецелых чисел в шелле нет. Нужно сравнивать целые части (и если они
равны, то дробные).

>Или как сравнить строки (по идее цифры в кодах символов идут
>последовательно, поэтому должно подойти)

Операторы -eq, -gt и т.д. сравнивают операнды как числа:

IFS=. read whole fraction; [ $whole -lt ...] && etc

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Преобразование типов в Bash-скрипте"
Сообщение от Danger Dancer emailИскать по авторуВ закладки on 23-Янв-03, 17:42  (MSK)
>Операторы -eq, -gt и т.д. сравнивают операнды как числа:

конструкция  if [ `cat xxx` = '7.3' ] ; then ....
работает нормально, без ошибок, а вот если вместо = ставить < или >=, то тут он уже требует числовых значений.

>
>IFS=. read whole fraction; [ $whole -lt ...] && etc

Я не понял эту строку, поясни пожалуйста. Я поискал инфу, но насколько я понял, Команда read есть только в ksh, да и то нигде не нашел описания :(

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Преобразование типов в Bash-скрипте"
Сообщение от vnp emailИскать по авторуВ закладки on 23-Янв-03, 20:55  (MSK)
>>Операторы -eq, -gt и т.д. сравнивают операнды как числа:
>
>конструкция  if [ `cat xxx` = '7.3' ] ; then ....
>
>работает нормально, без ошибок, а вот если вместо = ставить < или >=, то тут он уже требует числовых значений.

Об чем и речь. Оператор '=' сравнивает строки.
>>
>>IFS=. read whole fraction; [ $whole -lt ...] && etc
>
>Я не понял эту строку, поясни пожалуйста.
>Я поискал инфу, но насколько
>я понял, Команда read есть только в ksh, да и то
>нигде не нашел описания :(

read есть в любом шелле. Она вчитывает строку в свои аргументы,
пословно (если аргументов мало, а слов много, последний аргумент
будет содержать более одного слова). Разбиение строки на слова
делается по значению IFS (internal field separator), каковой мы
делаем точкой на время выполнения команды read. man bash.

Я не люблю команду if; предпочитаю pipelines с командой [. Дело вкуса.
-lt означает "less than" т.е. <. Имеется полный комплект операторов
сравнения чисел, которые можно группировать логическими операторами
-a (and) и -o (or). В обшем, man test.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Преобразование типов в Bash-скрипте"
Сообщение от Danger Dancer emailИскать по авторуВ закладки on 28-Янв-03, 15:24  (MSK)
Решение нашел : sed -e "s/....

Спасибо за советы :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру