LINUX.ORG.RU
ФорумAdmin

Не могу разобраться со скриптом


0

0

Делаю скрипт для проверки почты

#!/bin/bash
# проверка запущен ли почтовый клиент (0 - незапущен, не 0 - запущен)
runmail=`ps -A | grep -c 'icedove'`
if (( runmail>0 ))
   then ison=`cat /sys/class/leds/asus::mail/brightness` 
   if (( ison=1 )) then echo 0 > /sys/class/leds/asus::mail/brightness
   fi
fi
При запуске вылетает такая ошибка:
:~$ sh offled.sh
offled.sh: line 6: syntax error near unexpected token `then'
offled.sh: line 6: `   if (( ison=1 )) then echo 0 > /sys/class/leds/asus::mail/brightness'
:~$



Последнее исправление: delimer (всего исправлений: 1)

После тестовой конструкции надо ставить `;'. И да, проверять наличие процесса разумнее с помощью pidof.

GotF ★★★★★
()
Ответ на: комментарий от GotF

Спасибо помогло. а то читал про условия, единственно, что там было: «Когда if и then располагаются в одной строке, то конструкция if должна завершаться точкой с запятой.»

delimer
() автор топика
#!/bin/bash 
if [[ $(pidof icedove) ]]; then
    ison=$(cat /sys/class/leds/asus::mail/brightness)
    [[ $ison -eq 1 ]] && echo 0 > /sys/class/leds/asus::mail/brightness
fi
GotF ★★★★★
()
Ответ на: комментарий от GotF

конечно же не pidof а pgrep, соответственно then тут вообще не нужен

pgrep icedove > /dev/null && ison=`cat /sys/class/leds/asus::mail/brightness`

zolden ★★★★★
()
Ответ на: комментарий от zolden
┌[~]
└> time pidof firefox-bin 
3337

real	0m0.006s
user	0m0.000s
sys	0m0.004s
┌[~]
└> time pgrep firefox-bin 
3337

real	0m0.015s
user	0m0.004s
sys	0m0.000s

Сравнивай, думай. Насчёт if .. then .. fi согласен, можно и без лишней писанины :-)

GotF ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.