abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 23:00 | Nová verze

Po 9 týdnech vývoje od vydání Linuxu 5.17 oznámil Linus Torvalds vydání Linuxu 5.18 (LKML). Přehled nových vlastností a vylepšení na stránce Linux Kernel Newbies.

Ladislav Hagara | Komentářů: 0
včera 14:44 | Komunita

V Ubuntu 22.10 s kódovým jménem Kinetic Kudu bude zvukový server PulseAudio nahrazen multimediálním serverem PipeWire.

Ladislav Hagara | Komentářů: 6
21.5. 22:44 | Zajímavý článek

Tavis Ormandy popisuje, jak zprovoznil 32 let starý unixový port tabulkového procesoru Lotus 1-2-3 na moderním Linuxu. Doprovodné zdrojové kódy jsou na GitHubu.

Fluttershy, yay! | Komentářů: 5
21.5. 17:00 | Nová verze

Po pěti měsících vývoje od vydání verze 250 byla vydána nová verze 251 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 2
21.5. 15:44 | IT novinky

HP ve spolupráci se System76 představil 14" notebook HP Dev One s procesorem AMD Ryzen 7 PRO a předinstalovaným Pop!_OS Linuxem.

Ladislav Hagara | Komentářů: 12
21.5. 15:00 | Nová verze

Byla vydána verze 1.61.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

Ladislav Hagara | Komentářů: 0
19.5. 00:33 | Zajímavý článek

Správce nástroje curl Daniel Stenberg na GitHubu průběžně vytváří svou novou knihu Uncurled, v níž shrnuje své dlouhodobé zkušenosti s údržbou open-source projektu: od odpozorovaných pouček po vtipné a ne až tak vtipné příklady e-mailů od uživatelů.

Fluttershy, yay! | Komentářů: 27
19.5. 00:22 | Nová verze

Byla vydána nová major verze 25.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

Ladislav Hagara | Komentářů: 5
19.5. 00:11 | Nová verze

Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript a TypeScript, bylo vydáno ve verzi 1.22. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
18.5. 18:22 | Nová verze

Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 9.0. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 8
Na sociálních sítích nebo jiných webových diskuzích vystupuji pod
 (62%)
 (15%)
 (23%)
Celkem 319 hlasů
 Komentářů: 27, poslední včera 17:10
Rozcestník


Dotaz: bash: porovnanie des. cisel

8.3.2005 15:14 oron | skóre: 27
bash: porovnanie des. cisel
Přečteno: 645×
a=2.56
b=3.89

potrebujem spravit podmienku
if $a < $b; then
  echo "a < b"
fi

prosim vas ako ? najeko sa stale mocem dokola a nejde mi to ...?
dik

Odpovědi

8.3.2005 15:19 Tomík Pařízek
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
man bash:

"-gt" > "-lt" <

atd...
8.3.2005 15:28 oron | skóre: 27
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
porovnat cele cisla samozrejme viem,
problem mam s des.cislom .... ?
8.3.2005 15:32 Yeti
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
Bash neumí porovnávat desetinná čísla. Nehledě na to, že < je v shellu přesměrování. Použij zsh, awk, perl, ...
8.3.2005 15:39 oron | skóre: 27
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
ano ... viem ze bash nevie robit s des. cislom ... skusam to pomocou bc, ale toto sa mi zda trocha divoke
if [ $(bc << EOF
$a < $b
EOF
) -eq 1 ]; then
   echo "a < b"
else
   echo "a > b" 
fi

9.3.2005 08:23 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
hmm, a co je na tom divného. Když holt nechceš použít něco pořádného, tak se nediv. Krom toho tvrďáci by použili dc.
[ $(dc <<<"[1pq]sa$a $b>a0p") -eq 1 ] &&
  echo "a < b" ||
  echo "a > b"
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
9.3.2005 09:38 Yeti
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
Tvrďák použije sort ;-)
function rnle() {
  test `echo -e "$1\\n$2" | sort -g | head -n 1` = $1
}
function rnge() {
  test `echo -e "$1\\n$2" | sort -g | head -n 1` = $2
}
9.3.2005 17:20 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
No mě to přijde proti dc moc easy, ale musím uznat, že je to drsnější co do plýtvání systémovými prostředky a na to mě moc neužije. Krom toho jsem se po dlouhé době donutil přečíst man dc a možnosti tohoto nástroje mě nadchly, takže odpříště všechno nepíšu v bashi, ale v dc ;-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
9.3.2005 18:22 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
A vůbec. Ještě jednou se snížím k bashi.
rnlt() {
  if [ ${1:0:1} == '-' -a ${2:0:1} == '-' ]
  then
    rngt ${1:1} ${2:1}
    return $?
  fi
  IFS='.'
  a=($1)
  b=($2)
  [ ${a[0]} -lt ${b[0]} ] && return 0
  [ ${a[0]} -gt ${b[0]} ] && return 1
  i=0
  while :
  do
    [ -z "${a[1]:$i:1}" -a -n "${b[1]:$i:1}" ] && return 0
    [ -z "${b[1]:$i:1}" ] && return 1
    [ ${a[1]:$i:1} -lt ${b[1]:$i:1} ] && return 0
    let i++
  done
}
rngt() {
  if [ ${1:0:1} == '-' -a ${2:0:1} == '-' ]
  then
    rnlt ${1:1} ${2:1}
    return $?
  fi
  IFS='.'
  a=($1)
  b=($2)
  [ ${a[0]} -gt ${b[0]} ] && return 0
  [ ${a[0]} -lt ${b[0]} ] && return 1
  i=0
  while :
  do
    [ -n "${a[1]:$i:1}" -a -z "${b[1]:$i:1}" ] && return 0
    [ -z "${a[1]:$i:1}" ] && return 1
    [ ${a[1]:$i:1} -gt ${b[1]:$i:1} ] && return 0
    let i++
  done
}
Teda zatím to není úplně blbuvzdorné a používá se to.
rnlt $a $b && echo 'a < b' || echo 'a >= b'
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
9.3.2005 19:04 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
Dělám snad někde chybu -- kromě toho, že neparsuji semilogaritmický tvar -- když to porovnávám jen
function rnle() {
  [ ${1/.*} -lt ${2/.*} ] && return 0
  [ ${1/.*} -gt ${2/.*} ] && return 1
  if [ ${1:0:1} = '-' ]; then
    [ ! ${1#*.}0 \> ${2#*.}0 ]
  else
    [ ! ${2#*.}0 \> ${1#*.}0 ]
  fi
}
9.3.2005 19:36 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
Děláš:
$ rnle 3.45 3.345 && echo OK
OK
$ rnle 3 3.345 && echo OK
$
Nicméně, když na to teď s odstupem koukám, tak je to fakt hnus, co takhle:
rnle() {
  IFS='.'
  a=($1)
  b=($2)
  [ $a -lt $b ] && return 0
  [ $a -gt $b ] && return 1
  if [ ${a:0:1} == '-' ]
  then
    a[0]=${b[1]}
    b=${a[1]}
  else
    a=${a[1]}
    b=${b[1]}
  fi
  for((i=${#a};i<${#b};i++)); do a=${a}0; done
  for((i=${#b};i<${#a};i++)); do b=${b}0; done
  [ $a -ge $b ] && return 1
  return 0
}
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
9.3.2005 19:56 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
V tom problém není, protože > porovnává lexikograficky. Jen jsem zaměnil větve té podmínky
function rnle() {
  [ ${1/.*} -lt ${2/.*} ] && return 0
  [ ${1/.*} -gt ${2/.*} ] && return 1
  if [ ${1:0:1} = '-' ]; then
    [ ! ${2#*.}0 \> ${1#*.}0 ]
  else
    [ ! ${1#*.}0 \> ${2#*.}0 ]
  fi
}
9.3.2005 20:18 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
Musím uznat, že je to elegantní
rnlt() {
  if [ ${1/.*} -ne ${2/.*} ]
  then [ ${1/.*} -lt ${2/.*} ]
  elif [ ${1:0:1} = '-' ]
  then [ ${1#*.}0 \> ${2#*.}0 ]
  else [ ${2#*.}0 \> ${1#*.}0 ]
fi
}
Tak dnešní kontest jsi vyhrál ;-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
9.3.2005 19:36 Ja
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
Ja to mam podobne, i kdyz asi trochu prasacky ...
function rnlt()
{
        celacast_1=`echo $1|cut -d. -f 1`;
        descast_1=`echo $1|cut -d. -f 2`;
        celacast_2=`echo $2|cut -d. -f 1`;
        descast_2=`echo $2|cut -d. -f 2`;
        if [ $celacast_1 -eq $celacast_2 ]
        then
                if [ $celacast_1 -lt 0 ]
                then
                        descast_1=`expr -1 \* $descast_1`;
                        descast_2=`expr -1 \* $descast_2`;
                fi
                [ $descast_1 -lt $descast_2 ]&& return 0;
                return 1;
        else
                [ $celacast_1 -lt $celacast_2 ]&& return 0;
                return 1;
        fi
}
9.3.2005 19:46 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
Stejnej problém jako Yeti, nestejně dlouhé desetiné části selžou. Nicméně, naučit se používat konstrukce typu ${variable#pattern}, ${variable%pattern} a používat IFS by ušetřilo hodně zbytečných subprocesů.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
9.3.2005 19:51 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: porovnanie des. cisel
A to nemluvím o těch zbytečnejch echo.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.