2012-10-27 163 views
0

什麼是錯的shell腳本如下代碼:shell腳本嵌套如果

下面的代碼拋出意外別的錯誤:未找到

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錯誤:

/usr/bin/sftp –v -oPort=$SFTP_PORT -b $SFTP_BATCH_FILE [email protected]$REMOTE_SERVER_PROD >> $LOG_FILE 2 >> $LOG_FILE 

問候,

回答

2

您在第二個if語句後缺少,然後

它應該是

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

至於第二命令,無論是未安裝SFTP或它不在/usr/bin

運行which sftp找出它在哪裏。

0
if [[ $result -eq 4 || $result -eq 5 ]]; 

你忘了 '然後' if結構之後。

如果找不到,請檢查路徑中是否找到sftp。

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 
+0

爲什麼它是一個「錯誤」使用「if」語句? – Ben

+0

@Ben因爲這是錯誤的事情! –