Bash脚本无法识别设备ID?

时间:2016-11-22 20:17:11

标签: bash shell

我一直在处理将在启动时运行的脚本,但我遇到了问题。该脚本旨在减慢鼠标加速度,因为我使用的是游戏鼠标并且它总是太快。

当我使用xinput --list时,我得到了这个输出(在许多其他行中):

  

SteelSeries Sensei Raw Gaming Mouse id = 10 [slave pointer(2)]

当我打开终端并运行此命令时,一切正常,我的灵敏度发生了变化:

xinput --set-prop 10 "Device Accel Constant Deceleration" 2

但是,当我将上面的字符串放在带有' eval'的shell.sh中时在开始时,它会提示我以下错误:

  

属性'设备'不存在,你需要指定它的类型和   格式

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您不需要eval;完全按照脚本中的终端使用命令。

问题是eval基本上重新分析了它收到的字符串,这是通过将参数参数与空格连接而产生的。您的eval命令等同于

xinput --set-prop 10 Device Accel Constant Deceleration 2

如果您引用整个字符串,可以使用eval

eval 'xinput --set-prop 10 "Device Accel Constant Deceleration" 2'

但没有理由这样做;只需使用

xinput --set-prop 10 "Device Accel Constant Deceleration" 2

答案 1 :(得分:1)

如其他帖子所述,您不需要使用eval。我还会添加其他内容:您应该使用设备的名称而不是ID号,因为如果您向计算机添加内容,ID号可能会更改(或者出于其他更为模糊的原因)。我会推荐这个:

xinput --set-prop "SteelSeries Sensei Raw Gaming Mouse" "Device Accel Constant Deceleration" 2