LINUX.ORG.RU

Bash: отправка команды в screen и экранирование символов

 


0

2

Здравствуйте, есть вот такая рабочая команда

screen -S $screen_name -X eval 'stuff "say некоторый_текст"\015'
которая отправляет в свернутый screen команду «say некоторый_текст» и нажимает enter я запускаю эту команду в цикле, и мне необходимо, чтобы вместо «say некоторый_текст» была переменная, которая менялась по ходу работы цикла Я пробовал сделать так:
screen -S $screen_name -X eval 'stuff "say $my_var текст"\015'
screen -S $screen_name -X eval "stuff "say $my_var текст"\015"
Подозреваю, что из-за " переменные отображаются как простые символы если же поменять на двойные кавычки, то команды не правильно парсится Причем, если вводить команды напрямую в консоль - работает, если запустить скрипт с циклом - нет
timer_counter=10
while [[ $timer_counter -gt 0 ]]
     do
     screen -S main -X eval 'stuff "say До перезагрузки сервера $timer_counter секунд"\015'
     sleep 1s
     let timer_counter--
done 

screen -S $screen_name -X eval 'stuff "say '$my_var текст'"\015'

anonymous
()
"stuff 'say $my_var текст'\015"
"stuff \"say $my_var текст\"\015"
surefire ★★★
()
Ответ на: комментарий от anonymous
screen -S main -X stuff "echo До перезагрузки сервера $timer_counter секунд\n"

не работает, он воспринимает \n как символы

VVSLawyer
() автор топика
Ответ на: комментарий от VVSLawyer

RTFM

он воспринимает \n как символы

если минимально сделать

man echo
вдумчиво почитать, то получится не
echo До перезагрузки сервера $timer_counter секунд\nblablabla
До перезагрузки сервера секундnblablabla
а
echo -e 'До перезагрузки сервера $timer_counter секунд\nblablabla'
До перезагрузки сервера $timer_counter секунд
blablabla

novitchok ★★★★★
()
Ответ на: RTFM от novitchok

У меня почему-то и без -e работает -X stuff "echo $my_var текст\n"

anonymous
()
Ответ на: комментарий от anonymous

Т.е. echo -e вообще не причем

-X stuff "ls\n" тоже работает (\n срабатывает как ENTER)

т.е. \n интерпретирует сам screen

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.