0

shell脚本中的以下代码有什么问题:

下面的代码抛出意外的 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

您在第二个 if 语句之后缺少then 。

它应该是

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

至于第二个命令,要么 sftp 未安装,要么不在/usr/bin.

跑去which sftp看看它在哪里。

于 2012-10-27T12:57:25.240 回答
0
if [[ $result -eq 4 || $result -eq 5 ]];

您忘记了 if 构造之后的“then”。

找不到时,检查路径中是否找到了 sftp。

于 2012-10-27T12:56:53.133 回答
0

有两个错误。语法错误是缺少then. 另一个错误是这应该是一个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 回答