Чергове “прозріння” граблями в лоб не забарилося. Ситуація, як у M$ Windows: на екрані повідомлення про успішне завершення, а насправді жодних зрушень. Як виявилося, причиною стали наступні рядки у скрипті:
long_operation 2>&1 | tee /var/log/long_operation.log [[ $? -eq 0 ]] && echo "Succeeded"
Якщо виконання “довгої операції” закінчується невдало, то tee сумлінно приховає цей факт, і в будь-якому випадку з’явиться повідомлення про успіх. Отже, таке шоу краще влаштовувати по-іншому:
long_operation >(tee /var/log/long_operation.log) 2>&1 [[ $? -eq 0 ]] && echo "Succeeded"
UPD
Несподівано ікнулося, що це працює не завжди. Тепер використовуємо ${PIPESTATUS[0]}.
Немає коментарів:
Дописати коментар