0

シェル スクリプトの次のコードの問題点は次のとおりです。

予期しないelseエラーをスローする以下のコード:

if [ $result -eq 0 ];
then
  echo "SFTP completed successfully to Prod Remote Server" >> $LOG_FILE
else
    errorConnectToProd=1
   if [[ $result -eq 4 || $result -eq 5 ]];
  echo "FAILED to connect to Server. " >> $LOG_FILE

   else
 echo "FAILED to SFTP to  Remote Server. " >> $LOG_FILE
   fi
fi

/usr/bin/sftp not found エラーを示す行の下:

/usr/bin/sftp –v -oPort=$SFTP_PORT -b $SFTP_BATCH_FILE $SOURCE_FUNCTIONAL_ID@$REMOTE_SERVER_PROD >> $LOG_FILE 2 >> $LOG_FILE

よろしく、

チャイ

4

3 に答える 3

2

2 番目の if ステートメントの後にthenがありません。

そのはず

 if [[ $result -eq 4 || $result -eq 5 ]];
 then
   echo "FAILED to connect to Server. " >> $LOG_FILE

2 番目のコマンドについては、sftp がインストールされていないか、またはインストールされていません/usr/bin

which sftpそれがどこにあるかを見つけるために実行します。

于 2012-10-27T12:57:25.240 に答える
0

2つのエラーがあります。構文エラーは欠落していthenます。もう1つのエラーは、これがcaseステートメントである必要があるということです。

exec >> $LOG_FILE
case "$result" in
0)   echo "SFTP completed successfully to Prod Remote Server";;
4|5) errorConnectToProd=1
     echo "FAILED to connect to Server. ";;
*)   echo "FAILED to SFTP to  Remote Server. ";;
esac
于 2012-10-27T17:55:11.967 に答える
0
if [[ $result -eq 4 || $result -eq 5 ]];

if コンストラクトの後の 'then' を忘れています。

見つからない場合は、パスに sftp があるかどうかを確認します。

于 2012-10-27T12:56:53.133 に答える