Преобразовать текстовый ответ на команду в двоичный 0 или 1 - PullRequest
0 голосов
/ 25 мая 2019

Таким образом, я могу запросить FreePBX из командной строки «Есть ли офисные телефоны в дневном или ночном режиме» с помощью этой команды: rasterisk -x "database get DAYNIGHT C0" Затем я получу в ответ: Value: NIGHT или Value: DAY.

Затем я хочу иметь возможность вызывать это как сценарий, и этот сценарий должен возвращать 0, если ответом является Значение: ДЕНЬ, и 1, если ответом было Значение: НОЧЬ.

Любые идеи, как мне поступитьделать это?!

Спасибо!

Это для интеграции с Home Assistant, чтобы Home Assistant знал состояние моего офиса PABX

switch:
  - platform: command_line
    switches:
      kitchen_light:
        command_on: switch_command on kitchen
        command_off: switch_command off kitchen
        command_state: Returning a result code 0 will indicate that the switch is on.

1 Ответ

0 голосов
/ 25 мая 2019

Сначала извлеките значение, а затем условно echo что вам нужно.

resp="Value: DAY"  # load this variable with the response string
val="${resp#*: }"  # remove the prefix
if [[ "$val" == DAY ]]; then
    echo 0
elif [[ "$val" == NIGHT ]]; then 
    echo 1
else
    echo Invalid  # to handle unexpected responses
fi

Вы можете написать условное в одну строку,

[[ "$val" == DAY ]] && echo 0 || { [[ "$val" == NIGHT ]] && echo 1 || echo Invalid; }

См. Расширенное руководство по написанию сценариев для получения дополнительной информации о Bash манипулировании строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...