anonymous@RULINUX.NET~# Last login: 2024-04-19 16:43:54
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

[bash] atoi()

bash

# convert string to integer (base 10; leading zeros ignored)
function atoi ()
{
        local len
        local res
        local ch
        local stop

        if [ $# == 1 ]; then
                len=${#1}
                res=0
                stop=0
                for n in `seq 0 $((len-1))`; do
                        ch=${1:$n:1}
#                       echo "$n: ${ch}"
                        if [ -n "${ch//[0-9]}" ]; then
                                stop=1
                        fi
                        if [ ${stop} -eq 0 ]; then
                                res=$((res*10+ch))
                        fi
                done
                echo "${res}"
        fi
}
 


Пример использования:
bash

VAL=$(atoi "2435")
 

anonymous(*) (2021-02-26 11:22:10)
Отредактировано anonymous по причине "не указана"

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: [bash] atoi() от anonymous 2021-02-26 11:22:10
avatar
Скрыть

Re:[bash] atoi()

Нет, потому что у VAL типом всё равно будет строка.

lockywolf(*)(2021-02-26 11:31:19)

[#] [Добавить метку] [Редактировать] Ответ на: Re:[bash] atoi() от lockywolf 2021-02-26 11:31:19
avatar
Скрыть

Re:[bash] atoi()

Зато арифметика будет работать. Для простых строк, состоящих только из цифр, это не имеет значение, а вот для всяких "2345хуй" имеет:

bash

> echo "$(($(atoi "2345f")+1))"
2346
> echo "$(("2345f"+1))"
bash: 2345f: слишком большое значение для основания (неверный маркер <<2345f>>)
>
 

anonymous(*)(2021-03-20 18:01:24)

Mozilla/5.0 (X11; Linux) AppleWebKit/537.32 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.32 Midori/0.5
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!