[ImoLUG] Help debus script bash

Paride Balestri paridebalestri@gmail.com
Dom 11 Lug 2010 15:07:13 CEST


Ciao a tutti!
Sto scrivendo uno script in bash ma ho un po' di problemi con le variabili.
Avrei bisogno di fare del debug, magari step-by-step, e magari potendo 
vedere anche lo stack delle chiamate, le variabili "in pancia" ecc....

Googlando ho trovato che mettendo nello script come prima riga   
#!/bin/sh -x   attivo il debug... ma non è esattamente quello che vorrei...

In sostanza il mio primo problema da risolvere è il seguente:
a) leggo il pid di un processo dal suo file in /var/run
b) verifico con ps se il pid compare tra i processi attivi (per evitare 
che il file di pid sia rimasto "appeso")
c) se a=b allora tutto ok altrimenti segnalo con un notify che il 
processo non sta girando.

Il problema è quando vado a fare la comparazione tra le 2 stringhe che 
contengono il pid, ovvero:

pidfile=`cat /var/run/freepops.pid`
pidprocess=`ps ax -o pid -o comm | grep freepopsd`

echo Pidfiile len: ${#pidfile}   <----- questo restituisce 4

pidfile=" $pidfile freepopsd"    <------ aggiungo la stringa in modo da 
renderla "uguale" a $pidprocess

echo Pidfile new len: ${#pidfile}   <------ questo restituisce 14

echo Pidfile: $pidfile

echo $pidfile | hexdump -C

echo Pidprocess: $pidprocess

echo $pidprocess | hexdump -C

echo Pidprocess len: ${#pidprocess}    <----- questo restituisce 15

if [ pidfile = pidprocess ]; then    <------ questo restituisce false
   echo WOW !!!!
else
   echo OUCH !!!
fi



Il problema è che non capisco come mai se con hexdump le due variabili 
sono identiche, per la lunghezza non lo sono....
Non riesco a capire.... ecco perchè mi servirebbe il debug di cui 
parlavo sopra...

Qualcuno ha qualche idea ?

Grazie a tutti
Ciauz

bale


Maggiori informazioni sulla lista ImoLUG