У меня есть скрипт, который использует rsync для синхронизации данных в удаленном -> локальном сценарии. Сразу после запуска команды rsync проверьте, равен ли код ошибки нулю или нет. Если его ноль, дальнейшие команды выполняются. Это, однако, не учитывает тот факт, что rsync мог успешно работать, но не вносил никаких изменений. Из-за этого условие равного нуля будет выполняться независимо, что немного избыточно.
rsync -aEivm --delete /path/to/remote/ /path/to/local/
if [ $? -eq 0 ]; then
# Success do some more work!
else
# Something went wrong!
exit 1;
fi
Что было бы лучшим подходом для расширения этого, чтобы проверить, действительно ли были какие-либо изменения, основанные на запущенной команде rsync Я читал, что флаг -i может обеспечить вывод на стандартный вывод, но как это можно поместить в условный блок?
a=$("rsync command")
. Это выполнит rsync
команду и сохранит stdout
в a
. Тогда вы можете запустить тесты наa
| grep /
или что-то в этом роде, а затем проверить состояние выхода grep с помощью значения $?
должно быть 1, если не было вывода.
-v
туда, поэтому он уже предоставляет информацию, необходимую вам для вывода ... например, список файлов, которые были фактически отправлены. Если ничего не изменилось, это просто./
.