Присвоение результата команды в качестве переменной

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

Re: Присвоение результата команды в качестве переменной

Непрочитанное сообщение Гость » 2009-10-30 21:01:47

еще вопросы по sh/awk/sed? кстати, в том awk-скрипте есть пара багов

Код: Выделить всё

#! /usr/bin/awk -f

BEGIN {
    lim = split("Ki:Mi:Gi:Ti:Pi:Ei:Zi:Yi", h, ":")
}

/^[[:digit:].]+$/ {
    n=$0
    for(i = 0; n >= 2^10 && i <= lim; i++)
        n /= 2^10
    if(n == int(n))
        f = 0
    else if(n >= 10) {
        n = int(n)
        f = 0
    } else
        f = 1
    if(i > lim)
        h[i] = h[lim]
    printf "%'.*f %sB\n", f, n, h[i]
}

/^[[:digit:].]+[[:space:]]+([[:alpha:]]+|B)$/ {
    n=$1
    s=$2
    sub("B$", "", s)
    for(i = 0; i <= lim; i++)
        if(s == h[i])
            printf "%'f\n", n * 2^(10 * i)
}

Код: Выделить всё

$ echo 1073741824 | ./a.awk
1 GiB

$ echo 1073741823 | LC_NUMERIC=en_US.UTF-8 ./a.awk
1,023 MiB

$ echo 1000000000000000000000000000000000000000000000000000000000000 | LC_NUMERIC=en_US.UTF-8 ./a.awk
807,793,566,946,316,047,856,863,539,101,696 YiB 
поэтому лучше использовать готовые функции из C/python/etc, чтобы не городить велосипеды

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/