在Bash中退出不按预期工作

时间:2012-05-22 10:07:02

标签: bash ssh

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

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

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

客户的照片:
enter image description here

为什么会这样?

3 个答案:

答案 0 :(得分:2)

使用source运行脚本,这在当前shell中运行。这意味着exit终止当前shell并使用ssh会话终止。

source替换为bash,它应该可以使用,或者更好地放置

#!/bin/bash

打开文件并使其可执行。

答案 1 :(得分:2)

exit从当前 shell 返回 - 如果您通过直接运行脚本启动了脚本,则会退出运行该脚本的shell。

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

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

答案 2 :(得分:0)

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