将文本命令响应转换为二进制0或1

时间:2019-05-25 15:05:32

标签: bash shell

因此,我可以使用以下命令从命令行“在白天或夜晚模式下的办公室电话”查询FreePBX: rasterisk -x "database get DAYNIGHT C0" 然后我得到回应: Value: NIGHTValue: DAY

然后,我希望能够将此作为脚本来调用,并且如果响应的值为Value:DAY,则该脚本返回0;如果响应的值为Value:NIGHT,则返回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 :(得分:0)

先提取值,然后有条件地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字符串操作的更多信息,请参见Advanced Bash-Scripting Guide