O'Reilly logo

Bash. Receptury by Cameron Newham, JP Vossen, Carl Albing

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

17.24. Wyświetlanie separatora tysięcy

Problem

Chcemy dodać znak separatora tysięcy podczas wyświetlania na ekranie dużych wartości liczbowych.

Rozwiązanie

Micheal Wang opracował rozwiązanie bazujące jedynie na instrukcjach powłoki i krótko scharakteryzował je w punkcie „Analiza”.

# plik receptury: func_commify

function commify {
    typeset text=${1}

    typeset bdot=${text%%.*}
    typeset adot=${text#${bdot}}

    typeset i commified
    (( i = ${#bdot} - 1 ))

    while (( i>=3 )) && [[ ${bdot:i-3:1} == [0-9] ]]; do
        commified=" ${bdot:i-2:3}${commified}"
        (( i -= 3 ))
    done
    echo "${bdot:0:i+1}${commified}${adot}"
}

Analiza

Funkcja wykonuje takie same operacje jak człowiek, który zapisuje liczbę na kartce. Najpierw sprawdza, na której pozycji występuje przecinek, jeśli w ogóle ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required