Newsgroup: it.comp.os.linux.iniziare
Titolo: if then else

Ho questo semplicissimo script che abilita il bluetooth a fronte di un
evento ACPI
cat /proc/acpi/ibm/bluetooth |grep "^status:.*enabled"
if [ $? == 0 ]; then
    logger -t "$0" "bluetooth is on. switching it off."
    /etc/acpi/actions/stop_bluetooth.sh
    /usr/local/bin/xosd "bluetooth off"
else
    logger -t "$0" "bluetooth is off. switching it on."
    /etc/acpi/actions/start_bluetooth.sh
    /usr/local/bin/actions/xosd "bluetooth on"
fi
il problema è che esegue sempre e solo il ramo else!!!
Eppure mi sembra scritto bene, e il cat restituisce valori corretti,
sia in un caso che nell'altro!
Mi sapere aiutare?
Grazie per l'attenzione.



Prova a cambiare l'if in
if [ "$?" = "0" ]; then
oppure
if [ $? -eq 0 ]; then

 cat /proc/acpi/ibm/bluetooth |grep "^status:.*enabled"
Sai che il filesystem /proc/ è deprecato, vero?
Piuttosto utilizza /sys/ ;)
Ciao,
David
-- 
 . ''`.  Debian maintainer | 
http://wiki.debian.org/DavidPaleino
 : :'  : Linuxer #334216 --|-- 
http://www.hanskalabs.net/
 `. `'`  GPG: 1392B174 ----|---- 
http://snipr.com/qa_page
   `-   2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174

  `. `'`  GPG: 1392B174 ----|----
http://snipr.com/qa_page


 Non saprei come fare la stessa cosa con sys... qualche indicazione?
No, sinceramente no. Non ho bluetooth sul lapdog, perciò non saprei dirti.
Ravana in /sys/, qualcosa troverai sicuramente (figurati che io ho fatto una
patch [1] per ACPI, senza conoscere il C, e senza sapere cosa trovavo
in /sys/...)
Ciao,
David
[1] 
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=462305
-- 
 . ''`.  Debian maintainer | 
http://wiki.debian.org/DavidPaleino
 : :'  : Linuxer #334216 --|-- 
http://www.hanskalabs.net/
 `. `'`  GPG: 1392B174 ----|---- 
http://snipr.com/qa_page



stessa cosa :(

    `-   2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174
bluetooth o altro, credo che i principi siano gli stessi... mi
documenterò, grazie...

 mi documenterò, grazie...
Non c'è bisogno :)
Cerca dentro /sys/class/, qualcosa la trovi, garantito (i nomi sono molto più
che intuitivi: "power_supply" sono batterie e alimentatore, "thermal" sono i
sensori termici, ...)
Ciao,
David
-- 
 . ''`.  Debian maintainer | 
http://wiki.debian.org/DavidPaleino
 : :'  : Linuxer #334216 --|-- 
http://www.hanskalabs.net/
 `. `'`  GPG: 1392B174 ----|---- 
http://snipr.com/qa_page


> cat /proc/acpi/ibm/bluetooth |grep "^status:.*enabled"
e se qua metti (tanto per verifica)
echo $?
che succede? è sempre zero?
potresti ovviare con 
a=`cat /proc/acpi/ibm/bluetooth |grep "^status:.*enabled"|wc -l`
e fare gli stessi controlli su $a (ma invertiti)


 e fare gli stessi controlli su $a (ma invertiti)
Il problema è che lo script invocato da shell funziona, ma da ACPI
no...

 wrote:

Sì, grazie del suggerimento. così funziona...
Però vorrei capire perché nell'altro modo da ACPI non funzionava...
In ogni caso credo che seguirò i consigli di David e inizierò a
smenettare con il sysfs.
Per la cronaca: la distro è una gentoo 2008.0 beta2 su un thinkpad
t42p (2373HSG)
Ciao!

 Grazie per l'attenzione.
Fai scrivere dei messaggi o redireziona l'output su un file di log in modo
da capire quello che realmente succede.