如果[“$ state”== 1] ...永远不等于1

时间:2017-07-26 23:48:28

标签: linux bash shell

我正在尝试为我的触控板编写一个切换脚本,我稍后将其绑定到一个组合键,不幸的是我无法使脚本正常工作。我假设我的变量被宣告错误或者某些东西,但是如果有人可以为我指出,我真的很感激。我的设备列为:

ETPS/2 Elantech Touchpad               id=13    [slave  pointer  (2)]

到目前为止,这是我的脚本:

#!/bin/bash

device="13"
state='xinput list-props '$device' | grep -i "device enabled" | grep -o "[01]$"'

if [ "$state" == 1 ]; then
    xinput disable $device
else
    xinput enable $device
fi

似乎if语句不按我预期的方式工作,并且永远不会等于1

2 个答案:

答案 0 :(得分:1)

除非您稍后使用state,否则请执行以下操作:

if xinput list-props "$device" | grep -i "device enabled" | grep -q -o '1$'; then
   xinput disable "$device"
else
   xinput enable "$device"
fi

答案 1 :(得分:0)

而不是使用:

state='xinput list-props '$device' | grep -i "device enabled" | grep -o "[01]$"'

使用:

state=`xinput list-props "$device" | grep -i "device enabled" | grep -o "[01]$"`

小心。