[megoldva] bash for loop gány

Hozzászólások


for i in `seq 0 8` ; do
   …
   if [ -s mylog.txt ] ; then
      #létezik és nem nulla méretű a mylog.txt
      …
      continue
   else
      #nem létezik vagy null a mérete
      …
      continue
   fi
done

Kiegészítés: Ha a

fi

és

done

között nem csinálsz semmit, akkor a continue sem kell. Az ott lévő dolgokat „ugorná át” a continue hatására.

-----
"Ember embernek farkasa." Ezért aztán "Holló a hollónak nem vájja ki a szemét."

Ilyesmit szeretnél ha jól értem:

CIM=( ip1 ip2 ip3 ip4 )
for ip in ${CIM[@]}
do
cd /tmp/nyomtato_szamlalo/
res=`wget -d --output-file=/tmp/nyomtato_szamlalo/$ip.log --output-document=/tmp /nyomtato_szamlalo/oldal$ip.txt http://$ip/web/guest.cgi`
if [ "$res" =~ "*HTTP/1.0 200 OK*" ];
then
...
fi
done
exit 0

(A minta illesztésben nem vagyok biztos (=~ utáni rész), ezt majd a többiek javítják.

Ha így csinálom ezt kapom

line 18: 10.0.1.143: syntax error: invalid arithmetic operator (error token is ".0.1.143")


line 18: sorban van a wget ...
(error token is ".0.1.143") a legelső ipcím ahonnan letöltök 10.0.1.143
Ígyhát maradok a réginél az működik és még nem kényelmetlen.

Ehh... szerintem de a 'done' helyett 'fi' -t kellene hogy használj, és csak egy 'done' -nak kellene lennie a for lezárására.

Ha más módon tesztelsz, akkor nem kell

else

ág sem.


if [ -s /tmp/…/${CIM[$i]}.txt ]
   # a fájl mérete nagyobb nullánál
   műveletek
fi

Kieg.: A hiba azért volt, mert a

fi

az

if

-hez tartozik, így csak a legvégén kell.

-----
"Ember embernek farkasa." Ezért aztán "Holló a hollónak nem vájja ki a szemét."

break és continue

* Én egy indián vagyok. Minden indián hazudik.

Amúgy mi az a for i in 0 .. 8; do? Ennek az elemei:

0
..
8

Gondolom, ezt akartad:

for i in `seq 0 8`; do

vagy

for ((i=0; i<9; i++)); do

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE