-1

У меня есть код ниже

ssh ${DESTSERVNAME} 'cd /export/home/path/to/dir; Today=`date +%Y%m%d`; tar -cvf file_name.tar *${Today}*.*; gzip file_name.tar'    
if [ $? != 0 ]    
then    
    echo "Something is wrong with connection to ${DESTSERVNAME} or $

{DAILY_DEST_DIR}. Пожалуйста, проверьте файл $ LOGF, подключение к файлам $ {DESTSERVNAME} или в $ {DAILY_DEST_DIR}, $ {NAME} .sh прервано ненормально "| mailx -r emailadreess@tt.com -s" !!!Пожалуйста, прочитайте $ LOGF и сделайте соответствующее действие "emailaddress@tt.com
выход 1
фи

Я не понимаю, почему мое условие if не перехватывает $? = 2
Я нахожусь на AIX, и это - оболочка переменного тока, и также моя линия электронной почты не работает.
Кто-нибудь может мне помочь?

1 ответ1

0

Таким образом, в вашей удаленной команде вы говорите оболочке игнорировать состояние выхода. Помните разницу между a; b и a && b: первый запускает "b" независимо от того, удастся ли "a" или нет, а второй останавливается, если "a" не удался.

Итак, что вы получаете от ssh - это статус выхода последней выполненной команды, которая всегда gzip, потому что ; разделитель не заботится о предыдущих.

Вместо этого используйте что-то вроде ssh $host "cd /foo && tar --foo && gzip foo.tar" .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .