rshを利用してリモートホスト上のシェルスクリプトを実行すると、シェルスクリプトの成功・失敗にかかわらず終了ステータスはrst/sshの終了ステータスが返る。たとえば、リモートシェルが失敗した場合でも、通信が成功すると、終了ステータスは成功となる。
たとえは、これだと終了ステータスは正常終了の0がかえる。
#!/bin/bash
rsh tsu-nera@192.168.118.129 fail_shell
echo "$?"
こんなときは、コマンド実行結果をローカルファイルにリダイレクトして、その中身を見てみるとよい。ローカル側で $? が解釈されないように$?とする必要があることに注意。
#!/bin/bash
リモートシェル実行
rsh tsu-nera@192.168.118.129 “~/bin/fail_shell;echo $?";
ファイル出力から変数に代入
tail -n 1 tmp >> tmp2; rm tmp
read RESULT < tmp2; rm tmp2
# 結果判定
if [ $RESULT -eq 0 ]; then
echo "Shell Sucess"
exit 0
else
echo "Shell failed"
exit 1
fi
もっとシンプルな書き方がある気がする。。。