.sh для запуска команды терминала

Это, наверное, безумно просто, но я новичок в этом и понятия не имею, что я делаю. Очень просто, у меня есть MouseON.sh, что при запуске я хочу, чтобы он открыл терминал, выполнил команду, а затем закрыл открывшийся терминал. (да, я знаю, что это кажется излишним, но для моих целей это то, что мне нужно). Я гуглил и осматривал этот сайт, но не могу найти то, что могу понять из-за нубери.

У меня есть:

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

Каким образом открывается и закрывается терминал, но на самом деле не запускается 'xinput set-prop 10 "Device Enabled" 0'

Предложения? [ 114]

Кроме того, да, я знаю, что он называется «MouseON», и установка его в 0 отключит мышь, я установил ее на это для целей тестирования.

Я также знаю, что есть и другие способы включения и выключения мыши, но опять же для моих целей это то, что мне нужно.

Спасибо заранее.

1
задан 25 January 2016 в 18:05

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 splitted на пробелах; так xinput intepreted как аргумент sh -c опция и set-prop, 10, Device Enabled и 0 интерпретируются как опции / аргументы sh, и не как опции / аргументы xinput.

Решение заключает в кавычки xinput команда, использующая единственный / двойные кавычки, чтобы препятствовать тому команда быть splitted на пробелах и заставить его интерпретироваться 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"
2
ответ дан 25 January 2016 в 18:05

Другие вопросы по тегам:

Похожие вопросы: