退出嵌套shell

时间:2017-03-22 20:20:29

标签: linux bash shell ssh terminal

我正在通过ssh执行一个脚本:

ssh $USER@somehost 'bash -s' < ./myscript.sh

myscript.sh内:

echo '1'
sudo -i -u svcacct   # use the service account
echo '2'
exit                 # last working command
echo '3'             
exit
echo '4'

输出:

shellA$ 1
shellB$ 2
shellA$

正如您所看到的,exit命令在正确退出内部会话时会阻止后续脚本命令运行。 ssh连接挂起(Ctrl-C退出)。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

发布123的有效实施方式如下:

echo '1'
sudo -u svcacct -i bash -s <<'EOF-1'
echo '2'
EOF-1
echo '3'             
exit
echo '4'

请注意,我们取决于要退出的任何程序,保留stdin的文件描述符,其中任何特定内容排队等待读取,而是提供{{1}实例只有来自不同heredoc的非常有限且特定的stdin子集。