Тест [ -s $@ ]
проверяет наличие файла, который не является пустым.
- Если файл не пустой, не удаляйте его.
- Если файл пуст, удалите (пустой) файл.
Последовательность [ -s $@ ] || rm -f $@
, следовательно, удаляет текущий целевой файл ($@
в make
нотации), если это пустой файл.
Это интересная комбинация обозначений оболочки и make
. Часть $@
является обозначением make
для создаваемой цели. (Это также нотация оболочки для полного списка аргументов скрипта оболочки, но в этом контексте нотация make
имеет приоритет над нотацией оболочки - оболочка не видит $@
.)