Скрипт Bash для прослушивания вывода команды оболочки - PullRequest
1 голос
/ 27 февраля 2011

Быстрый вопрос. Как мне использовать скрипт оболочки для выполнения следующих действий:

  • выполнить команду unix (pmset -g ps), чтобы проверять вывод этого скрипта каждые 5 секунд, а затем, если вывод этой команды падает ниже 40% (пример вывода: «Текущий рисунок из» источника питания переменного тока ' -iBox 100%; зарядки '), тогда для него запускается скрипт оболочки unix ...

Любая помощь будет высоко ценится.

Ответы [ 2 ]

1 голос
/ 27 февраля 2011

Редактировать, для Bash 2.05 и выше :

#!/bin/bash
tab=$'\t'
while true  # run forever, change to stop on some condition
do
    threshold=100
    until (( threshold < 40 ))
    do
        sleep 5
        result=$(pmset -g ps)
        threshold="${result#*iBox$tab}"
        threshold="${threshold%\%*}"
    done
    shell_script
done

Оригинал, для Bash 3.2 и более поздних версий:

#!/bin/bash
pattern='[0-9]+'    # works if there's only one sequence of digits in the output, a more selective pattern is possible if needed
while true  # run forever, change to stop on some condition
do
    threshold=100
    until (( threshold < 40 ))
    do
        sleep 5
        result=$(pmset -g ps)
        [[ $result =~ $pattern ]]
        threshold=${BASH_REMATCH[1]}
    done
    shell_script
done
0 голосов
/ 27 февраля 2011

Примерно так будет работать

pmset -g ps | perl -pe 'if(/%.*Ibox ([0-9]+)%; ch.*$/ and $1 < 40){system "nameofshellscript"}'
...