.sh 运行终端命令

.sh 运行终端命令

这可能非常简单,但我对此还不太熟悉,不知道自己在做什么。很简单,我有 MouseON.sh,当它运行时,我希望它打开一个终端,运行一个命令,然后关闭它打开的终端。(是的,我知道这似乎是多余的,但就我的目的而言,这是我需要的)。我已经在 Google 上搜索过并浏览过这个网站,但由于新手,我真的找不到我能理解的东西。

我有:

#!/bin/sh
gnome terminal -x sh -c xinput set-prop 10 "Device Enabled" 0

它能很好地打开和关闭终端,但实际上并没有运行“xinput set-prop 10“Device Enabled”0”

有什么建议吗?

另外,是的,我知道它被称为“MouseON”,将其设置为 0 会关闭鼠标,我已将其设置为该值以进行测试。

我也知道还有其他方法可以打开和关闭鼠标但就我的目的而言,这就是我所需要的。

提前致谢。

答案1

man gnome-terminal

       -x, --execute
                 Execute the remainder of the command line inside the  termi‐
                 nal.

sh -c xinput set-prop 10 "Device Enabled" 0对 进行评估以便执行时,sh被解释为要运行的可执行文件,并且 的参数用sh空格分隔;因此xinput被解释为选项sh的参数,并且 、和被解释为 的选项/参数,而不是 的选项/参数。-cset-prop10Device Enabled0shxinput

解决方案是xinput使用单/双引号引用命令,以防止命令在空格上被分割,并使其sh作为选项的整体参数被解释-c

gnome terminal -x sh -c 'xinput set-prop 10 "Device Enabled" 0'

或者

gnome terminal -x sh -c "xinput set-prop 10 \"Device Enabled\" 0"

相关内容