LINUX.ORG.RU

Помогите с sh-скриптом


0

0

$ cat /proc/acpi/battery/C1AC/state

present:                 yes
capacity state:          ok
charging state:          charging
present rate:            273 mA
remaining capacity:      1940 mAh
present voltage:         16776 mV

Это состояние батареи.

Нужно выпарсить remaining capacity, т.е. число '1940' в данном случае, и вернуть 0 если оно больше var_low_capacity или 1, если меньше/равно.

В с-подобном псевдокоде:

int battery_state()
{
   int low_capacity = 100;
   int remaining_capacity = smart_magic_parser(/proc/acpi/battery/C1AC/state);
   return (remaining_capacity <= low_capacity) ? 0 : 1;
}

Нужен аналогичный скрипт на баше/сед/авк'e
Буду очень признателен!

Re: Помогите с sh-скриптом

cat /proc/acpi/battery/C1AC/state | awk -vlim=100 '/^remaining.*capacity/ { print ($3 > lim) }'

dilmah ★★★★★ ()

Re: Помогите с sh-скриптом

Лехко же:

cat /proc/acpi/battery/C1AC/state | grep 'remaining capacity' | awk '{print $3}'

anonymous ()

Re: Помогите с sh-скриптом

Ой, не прочитал внимательно.

А вот у dilmah на первый взгляд очень элегантное решение :)

anonymous ()

Re: Помогите с sh-скриптом

отправная точка - http://tldp.org/LDP/abs/html/ и:

rem=`cat /proc/acpi/battery/BAT0/state | grep remaining | awk '{print $3}'`

if [ $rem -gt 10000 ];then
 echo true
else
 echo false
fi

Pi ★★★★★ ()
Ответ на: Re: Помогите с sh-скриптом от anonymous

Re: Помогите с sh-скриптом

А как сделать чтоб это был исполняемый sh файл, возвращающий 0/1 как успешность своего выполнения, чтоб на if bat.sh; then action.sh; fi сработало?

fifajan ()
Ответ на: Re: Помогите с sh-скриптом от svu

Re: Помогите с sh-скриптом

> Народ, нафига grep перед awk-ом? Если awk сам умеет фильтровать не хуже грепа.

Привычка, тем более что awk как-то, ИМХО, хуже освещен в прессе :) (В том плане, что он нем меньше говорят. Для решения сходных серьезных задач используют перл, соответственно функционал более сложный чем print $n попросту выпадает из поля зрения, может и зря)

> Аналогичный вопрос можно задать и про cat

Привычка, опять же, к юникс-вею (пусть и бесполезная с практической точки зрения)

Оправдался типа.

anonymous ()
Ответ на: Re: Помогите с sh-скриптом от anonymous

Re: Помогите с sh-скриптом

> Для решения сходных серьезных задач используют перл, соответственно функционал более сложный чем print $n попросту выпадает из поля зрения

Ларри писал что он перл создал потому что не справился с awk:

Then the great Manager asked him to produce reports. Larry's first thought was "Let's use awk." Unfortunately, the awk of that day couldn't handle opening and closing of multiple files based on information in the files. Larry didn't want to have to code a special-purpose tool. As a result, a new language was born.

dilmah ★★★★★ ()
Ответ на: Re: Помогите с sh-скриптом от dilmah

Re: Помогите с sh-скриптом

Да, а еще у Поля Грехема, кажется, было такое удачное сравнение, что-то вроде awk -- это детский розовый велосипед с корзинкой и клаксоном, а перл -- оттюнингованный спорткар (или как-то так). По-моему, был еще третий язык, соответственно выстраивалась градация, но я что-то запамятовал.

anonymous ()
Ответ на: Re: Помогите с sh-скриптом от fifajan

Re: Помогите с sh-скриптом

cat /proc/acpi/battery/C1AC/state | awk -v res=1 -v lim=10000 '/^remaining.*capacity/ && $3<=lim {res=0}; END {exit res}'

sdio ★★★★★ ()

Re: Помогите с sh-скриптом

[ $(awk '/remaining[[:space:]]*capacity/ { print $2 }') -gt 100 ]
вернет 0, если больше и 1, если меньше. Использовать можно так
[ $(awk '/remaining[[:space:]]*capacity/ { print $2 }') -gt 100 ] || shutdown -r now

anonymous ()
Ответ на: Re: Помогите с sh-скриптом от anonymous

Re: Помогите с sh-скриптом

ой, забыл файл: [ $(awk '/remaining[[:space:]]*capacity/ { print $2 }' /proc/acpi/battery/C1AC/state) -gt 100 ]

anonymous ()
Ответ на: Re: Помогите с sh-скриптом от anonymous

Re: Помогите с sh-скриптом

>По-моему, был еще третий язык, соответственно выстраивалась градация, но я что-то запамятовал.

Наверное, Python?

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