Portál AbcLinuxu, 27. července 2025 20:33


Dotaz: BASH - IF - kombinace podminek pomoci AND (&&)

25.6.2011 12:37 padamCZ
BASH - IF - kombinace podminek pomoci AND (&&)
Přečteno: 419×
Odpovědět | Admin

Podminka IF neni nikdy splnena.

Nevite nekdo proc ?

CIL: Cilem podobneho skriptu je vybrat pouze urcitou skupinu fotografii (range) z velkeho poctu.

#!/bin/bash

touch DSCF8357.JPG DSCF8359.JPG DSCF8461.JPG DSCF8566.JPG

for fn in `ls *.JPG`; do
  #echo "$fn";
  if [ `expr substr $fn 5 3` -le "357" ] && [ `expr substr $fn 5 3` -ge "566" ] ; then
    echo "Prave jsme nasli: $fn" ;
  fi
done

rm -rf DSCF8357.JPG DSCF8359.JPG DSCF8461.JPG DSCF8566.JPG
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

stativ avatar 25.6.2011 12:46 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: BASH - IF - kombinace podminek pomoci AND (&&)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Protože ani splněná být nemůže. To co nejspíš hledáš, je OR (||).
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
25.6.2011 12:59 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: BASH - IF - kombinace podminek pomoci AND (&&)

Spíš má obráceně ty podmínky (jestli chce opravdu rozsah). IMHO měl na mysli něco jako

for f in *.JPG; do
  n=$[10#${f:4:4}]
  if [ $n -ge 8357 -a -$n -le 8566 ]; then
    echo "$f"
  fi
done
25.6.2011 13:02 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: BASH - IF - kombinace podminek pomoci AND (&&)

Chybička se vloudila… :-)

--- x.orig      2011-06-25 12:59:31.831392349 +0200
+++ x   2011-06-25 12:59:53.727116282 +0200
@@ -1,6 +1,6 @@
 for f in *.JPG; do
   n=$[10#${f:4:4}]
-  if [ $n -ge 8357 -a -$n -le 8566 ]; then
+  if [ $n -ge 8357 -a $n -le 8566 ]; then
     echo "$f"
   fi
 done
25.6.2011 13:18 padamCZ
Rozbalit Rozbalit vše Re: BASH - IF - kombinace podminek pomoci AND (&&)
Funguje prefektně.
Díky moc !
V regulárních výrezech se ještě pořádně nevyznám..
Funguje parádně a já jdu nastudovat RegExpy ;-)

Díky moc Michale !!
25.6.2011 13:29 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: BASH - IF - kombinace podminek pomoci AND (&&)

Tam ale žádné regulární výrazy nejsou; jestli myslíte ten trik na druhém řádku, tak vás budou zajímat spíš sekce Arithmetic Evaluation a Parameter Expansion v manuálové stránce k bashi.

Na druhou stranu, pokud se naučíte používat regulární výrazy, dříve či později se vám to určitě hodit bude, takže vás od nich rozhodně nechci odrazovat. :-)

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.