Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 退出嵌套shell后ssh脚本命令丢失_Linux_Bash_Shell_Ssh_Terminal - Fatal编程技术网

Linux 退出嵌套shell后ssh脚本命令丢失

Linux 退出嵌套shell后ssh脚本命令丢失,linux,bash,shell,ssh,terminal,Linux,Bash,Shell,Ssh,Terminal,我正在通过ssh执行一个脚本,如下所示: ssh$USER@somehost“bash-s”

我正在通过ssh执行一个脚本,如下所示:

ssh$USER@somehost“bash-s”

在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
2
3
的工作实现如下所示:

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

sudo-u svcacct-i bash-s有几种可能出错的方法,但最简单的方法之一是由
sudo-i
启动的内部bash(它被告知是交互式的,因此可能有一个真正的TTY,它本身有一个键盘)读取
退出
,即使退出是它执行的最后一个命令。如果在输入的
echo'4'
行中使用了它,则该输入不可用于任何其他进程。