Задумался тут над вопросом. В языке Си для операторов && и || определен порядок вычисления операндов. Более того, если левый операнд вернул ложь для && или истину для ||, то правый вычисляться уже не будет. Это позволяет использовать конструкции по типу «smth or die», которые сплошь и рядом можно встретить в скриптовых языках:
(f = fopen("file", "r")) || fprintf(stderr, "Can not open file\n");
Вы когда нибудь видели такой код на Си? Я нет. Вот интересно почему :) Предвидя ответы «слишком длинно», «некрасиво» и т.п.: тогда почему же в скриптовых языках оно так распространено?
На хабре регулярно публикуют разнообразные bash-скрипты, попроще и посложнее — внесу и я свою лепту.
Так сложилось, что я делаю много фотографий телефоном — по этой причине захотелось иметь способ автоматически сливать их на комп. Данный скрипт запрашивает список файлов на телефоне, сверяет его с локальным списком и загружет недостающие файлы. Он опирается на утилиту obexftp, доступную в большинстве дистрибутивов. У меня он висит в cron'e на 6 утра — довольно удобно. Вообще с его помощью можно получать не только фотографии — в целом, это простенькая утилита синхронизации данных.
Замечания по использованию и сам скрипт под хабракатом.