0

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

クライアントの写真:
ここに画像の説明を入力してください

なぜこうなった?

4

3 に答える 3

2

sourceスクリプトを実行するために使用します。これにより、現在のシェルでスクリプトが実行されます。これはexit、現在のシェルを終了し、ssh セッションを終了することを意味します。

と置き換えるsourcebash、動作するはずです。

#!/bin/bash

ファイルに追加し、実行可能にします。

于 2012-05-22T10:11:04.267 に答える
2

exitreturn from the current shell - スクリプトを直接実行して開始した場合、スクリプトが実行されているシェルを終了します。

return関数またはソース ファイルからの戻り値(TY Dennis Williamson) - 同じことですが、現在のシェルは終了しません。

breakループから戻る- に似てreturnいますが、ループ内の任意の場所で使用して、それ以上のアイテムの処理を停止できます。これはおそらくあなたが望むものです。

于 2012-05-22T12:49:32.337 に答える
0

現在のシェルから実行している場合、 exit は明らかにシェルを終了し、接続を切断します。新しいシェルで実行してみてください(スクリプトの前に . を使用する)か、終了の代わりに「リターン」を使用してください

于 2012-05-22T10:15:46.997 に答える