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
"set -x" parancsot írd be a script elejére.
Az jó nagyon bash debugolásra.
szerk.: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html
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
helyett
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.