Симуляция Enter Нажмите на экране

Я успешно выполнил команду

screen -S Run -X stuff 'stop'`echo -ne '\015'` 

в терминале, и у меня на экране «Выполнить» была получена команда «Стоп», а затем получен смоделированный ввод. Это приводит к завершению программы, работающей на этом экране. Однако, когда я пытаюсь сделать скрипт, который выглядит следующим образом

#!/bin/sh
  screen -S Run -X stuff 'stop'`echo -ne '\015'`

, экран восстанавливает текст

-X: stuff: invalid option stop-ne

Я хотел бы знать, что не так с моим сценарием и как исправить Это значит, что экран Run получает команду остановки, а затем получает ввод

.
0
задан 04.05.2020, 07:18

2 ответа

Версия sh echo не поддерживает опции.

Измените ваш сценарий так, чтобы он запускался с помощью Bash, например:

#!/bin/bash
screen -S Run -X stuff 'stop'"$(echo -ne '\015')"

В качестве альтернативы, просто вставьте буквальную новую строку в строку вместо того, чтобы полагаться на echo:

#!/bin/sh
screen -S Run -X stuff 'stop
'
1
ответ дан 04.05.2020, 07:19
  • 1
    Эй sry, но это, кажется, только получает " stop-ne" – Matt Klepeis 04.05.2020, 07:19
  • 2
    Спасибо я заставил его работать – Quuxplusone 04.05.2020, 07:20
  • 3
    Спасибо работало отлично – Jez 04.05.2020, 07:20
  • 4
    @Ethan В моем ответе, я поместил " Alternatively" раздел. Попробуйте это вместо этого. – foz1284 04.05.2020, 07:21

попробуйте:

screen -S Run -X stuff 'stop^M'
0
ответ дан 04.05.2020, 07:19
  • 1
    Используйте литеральный ctrl-m, не каре, сопровождаемое M. Можно также использовать ' \r' который я только что протестировал и подтвердил для работы. – Tomalak 04.05.2020, 07:19
  • 2
    Sry, но не srceen просто получает ' stop^M" – foz1284 04.05.2020, 07:20

Теги

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