У меня есть сценарий оболочки следующего типа:
#!/bin/bash
ssh mylogin@myremotemachine.com
echo "Hi"
exit
Я запускаю его локально, чтобы что-то сделать на удаленном сервере (обозначается как «echo" Hi "»). Однако, когда я запускаю его, я вижу подсказку на удаленном сервере, поэтому команда 'exit' не выполняется. Когда я вручную набираю "exit" в удаленном приглашении, я вижу, что «Соединение с myremotemachine.com» закрыто, а затем "Привет". Как я могу настроить скрипт оболочки таким образом, чтобы он правильно выходил и отображал (локальное) приглашение, из которого я его выполнил?
https://unix.stackexchange.com/questions/89747/ssh-exits-after-quit-case-in-bash-script и ssh и shell через ssh: как выйти? кажутся немного связанными, но я не мог приспособить идеи, представленные там./
ОБНОВИТЬ
Следующая, не очень минимальная версия приводит к Unmatched '.
,
#!/bin/bash
date=`date "+%Y-%m-%d"`
rsync -acxzP --delete --link-dest=/u3/mylogin/backup/old_backup /home/mylogin mylogin@myremotemachine.com:/u3/mylogin/backup/$date\_backup
ssh mylogin@myremotemachine.com bash -c "'
rm -f /u3/mylogin/backup/old_backup
ln -s $date\_backup /u3/mylogin/backup/old_backup
exit
'"
Если я удаляю двойные кавычки в этом фрагменте, я получаю: bash: -c: option requires an argument
и date: Undefined variable.