0

我使用 SSH Secure Shell 客户端连接到服务器并运行我的脚本。

我想在某些情况下停止脚本,所以当我使用退出时,不仅脚本停止,而且所有客户端都与服务器断开连接!,这是代码:

if [[ `echo $#` -eq 0 ]]; then
        echo "Missing argument- must to get a friend list";
        exit
fi

for user in $*; do
        if [[ !(-f `echo ${user}.user`) ]]; then
                echo "The user name ${user} doesn't exist.";
                exit
        fi
done

客户照片:
在此处输入图像描述

为什么会这样?

4

3 回答 3

2

您用于source运行脚本,这将在当前 shell 中运行它。这意味着exit终止当前的 shell 和 ssh 会话。

替换sourcebash它应该可以工作,或者更好地放

#!/bin/bash

到文件并使其可执行。

于 2012-05-22T10:11:04.267 回答
2

exit从当前shell返回- 如果您通过直接运行脚本来启动它,这将退出正在运行脚本的 shell。

return函数源文件返回(TY Dennis Williamson) - 同样的事情,但它不会终止您当前的 shell。

break循环返回- 类似于return,但可以在循环中的任何位置使用以停止处理更多项目。这可能就是你想要的。

于 2012-05-22T12:49:32.337 回答
0

如果您从当前 shell 运行,exit 显然会从 shell 退出并断开您的连接。尝试在新的 shell 中运行它(在脚本之前使用 .)或者使用 'return' 而不是 exit

于 2012-05-22T10:15:46.997 回答