当命令返回非 0 的退出状态时,SSH 连接自动关闭

当命令返回非 0 的退出状态时,SSH 连接自动关闭

当我在 VPS 服务器上执行命令(例如:grep、cat 等)并返回非 0 的退出状态时,我的 SSH 连接会自动关闭。我不知道这个问题可能与什么有关...

您是否已经遇到过此类问题?有什么建议吗?


现就此问题进行说明:

1)我从我的电脑连接到我的 VPS 服务器:sylvain@mycompute

sylvain@mycomputer:~$ ssh myuser@vps-server
Last login: Sat Sep  9 17:02:30 2017 from 11.22.33.44
myuser@vps-server:~$ 

2)我创建一个脚本,从第一个参数获取退出状态:

myuser@vps-server:~$ chmod u+x /tmp/test-exit-status.sh 
myuser@vps-server:~$ cat /tmp/test-exit-status.sh
#!/bin/bash

echo "Exit status will be '$1'."
exit $1

3)退出状态为 0,SSH 连接保持:

myuser@vps-server:~$ /tmp/test-exit-status.sh 0
Exit status will be '0'.
myuser@vps-server:~$ 

4)退出状态不为 0(例如 56),SSH 连接会自动关闭,并且在我的计算机上,SSH 命令的退出状态是脚本的退出状态:

myuser@vps-server:~$ /tmp/test-exit-status.sh 56
Exit status will be '56'.
Connection to vps-server closed.

sylvain@mycomputer:~$ echo $?
56

答案1

听起来好像set -e~/.bashrc

尝试执行set +e并重新运行测试,看看它是否再次执行同样的事情。

我会考虑明确添加set +e(或删除set -e)以~/.bashrc永久修复它。

相关内容