2014-10-20 2 views
1

У меня есть 1 вопрос относительно SFTP, если я успешно подключиться к серверу и загрузить файл, он возвращает 0, если сервер не подключен он ВЕРНУТЬ 255.Bash Script SFTP код возврата сравнения

$ ? переменная return 0 if success, return 255 if failed, но как-то в инструкции if-else результат всегда будет иметь успех даже $? возвращает 255, любая идея? я не уверен, что если способ сравнения является правильным или нет, я пытался как сравнить шпагатом и ИНТ

sftp [email protected]$ftpaddr <<_FTP>>$ftplogs 
cd /$DEST_DIR 
mput $FILE_NAME* 
quit 

pwd >> $ftplogs 
_FTP 


echo $?; 

if [ $? -eq 0 ]; 
then 
    mv $FILE_NAME* $ARCHIVE_DIR 
    echo "Success" 
elif [ $? -eq 255 ] 
then 
    echo "Failed" 
    exit 1 
else 
    echo "Unknown error" 
    exit 1 
fi 

РЕЗУЛЬТАТ:

Не удалось прочитать пакет: сброс соединения одноранговой

Успех

+0

Удалить «echo $ ?;'. – Cyrus

+0

Я попытался удалить echo $ ?; и если [$? -eq 0]; затем ... , но на этот раз он будет идти к «Unknow ошибке» – hades

+0

ах, NVM, я нашел его ... мой error..lol ... все равно спасибо – hades

ответ

0

это потому, что $? сбрасывается на каждой новой функции называется, так что вы должны захватить его один раз и проверьте, что variabl e:

rc=$? 
if [ $rc -eq 0 ]; then 
# ... 
+0

спасибо за помощь, это очень ценит ... – hades

Смежные вопросы