bash: while függvényben és azon kívül

Nem tudom miért van de néha keservesebb eghy jól működő scriptet összehoznom mint egy c programot. Néhány programot próbálok lelőni, scriptből és rájöttem hogy egy kódrészt tulajdonképpen állandóan, változatlanul használok, nosza legyen ez függvény:


kill_pid()
{
  CYCLE_COUNTER="."
  while [ -n "$PID_TO_KILL" -a "$CYCLE_COUNTER" != "...." ]
  do
    CYCLE_COUNTER="${CYCLE_COUNTER}."
    echo -n $CYCLE_COUNTER
    kill $PID_TO_KILL
    sleep 1
    PID_TO_KILL=`ps -ax -o pid | grep $PID_TO_KILL | grep -v 'grep'`
  done
  echo " done"
}

Egyszerúen be sem lép a ciklusba, ha kiíratom a ciklus előtt a $PID_TO_KILL értékét - kiírja mit kell. A $CYCLE_COUNTER értéke (első körben adott. Elkezdtem (kínomban) az idéző jelekkel variálni -n $PID_TO_KILL - az "-a" számára váratlan? Elvileg, szerintem az egész while utasításnak így is jónak kéne lenni:


  whiole [ -n $PID_TO_KILL -a $CYCLE_COUNTER != "...." ]

De így a "-a" -t nem akarja elfogadni. Szinte szóról-szóra azonos kód működött eddig, csak nem volt külön függvénybe. Mi sz'vathat itt engem?

Hozzászólások

Ami vicces, hogy nekem egy logolas miatt beinditott while ciklus 400K ramfogyasztason indul, es naponta 2 Megaval megnovekedik egy negysoros whiletrues ciklus memoriafogyasztasa, holott a felulirt logfajl merete egyaltalan nem valtozik, es amibol kiolvas, az is minimalisan

Amugy ahogy regen szoktak volt mondani: "Az Internet explorer egy nagyon jo program, le lehet vele tolteni a Firefoxot", ugy a bash is egy nagyon jo program, mert el lehet vele inditani egy python scriptet :D (vagy egy zsh-t)

esetleg


while [ -n "$PID_TO_KILL" -a "$CYCLE_COUNTER" != "...." ]

helyett


while [ -n "$PID_TO_KILL" ] && [ "$CYCLE_COUNTER" != "...." ]

illetve kerdes, hogy az adott /bin/sh a beepitett "["-t, vagy az (/usr)/bin/[-t hasznalja-e. lehet hogy egy #!/bin/sh helyetti #!/bin/bash is megoldja a problemadat. de en inkabb a fenti &&-t javallom elso"re...

A "set -x" -et még nem néztem. De szórol-szóra (látszólag) újra leírtam és most működik;) Lehet, hogy ezt egy olyan gépen kezdtem írni, ahol a local HU_hu volt, itt most UTF8 és English US - nem konvertáltam. De miért nem mutatja az mc? Ráadásul esküszöm, nem használtam ékezetes bash utasításokat.
Minden esetre a topicot nem tartom "MEGOLDOTT" -nak. A bash egy nagyon jó program csak mi nem tudjuk használni - lehet hogy ez a baja?

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