Выполнение нового сеанса tmux в сценарии оболочки с помощью exe c "$ @" - PullRequest
0 голосов
/ 29 апреля 2020

У меня только логин оболочки (sh, но не bash) через S SH соединение с удаленным устройством. Скрипт заканчивается exec "$@", который, как я понимаю, передает все параметры в виде строк. Теперь я хочу выполнить эту последнюю команду в новом сеансе tmux, чтобы программа продолжила работу в случае потери соединения. Это для проекта робототехники, поэтому я предполагаю, что соединение было частично прервано.

Как я могу обернуть это в команду, которая будет запускать exec "$@" в tmux?

Я уже пробовал: tmux new "exec \"$@\"" и tmux new -s session send-keys "exec \"$@\"", а также оба варианта только с "exec $@"

Однако, похоже, ничего не работает в shellchecker или моих черновых .sh файлах. Буду очень признателен за любую помощь.

1 Ответ

1 голос
/ 29 апреля 2020

Попробуйте:

exec tmux new -- "$@"

Если это не работает, вы можете попробовать что-то вроде:

exec tmux new -- sleep 10000

И попытаться подключиться, чтобы убедиться, что tmux запущен (например, что сценарий может найти tmux).

sh -x также может быть полезно увидеть, что на самом деле выполняется.

Также помните, что если tmux уже запущен, среда внутри может не быть как в скрипте.

...