我有以下类型的 shell 脚本:
#!/bin/bash
ssh mylogin@myremotemachine.com
echo "Hi"
exit
Run Code Online (Sandbox Code Playgroud)
我在本地运行它以在远程服务器上执行某些操作(由“echo“Hi”表示)。但是,当我运行它时,我在远程服务器上看到了提示——因此没有执行“退出”命令。当我在远程提示上手动输入“退出”时,我看到“连接到 myremotemachine.com”关闭,然后 “嗨”。如何设置 shell 脚本以使其正确退出并向我显示我执行它的(本地)提示?
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
'"
Run Code Online (Sandbox Code Playgroud)
如果我删除此代码段中的双引号,我会得到:bash: -c: option requires an argument和date: Undefined variable.