Це рішення не дотримується вказівки № 2 - чи має місце розпливчасті сендвіч-форми? Я на початку пішов на тему паліндром, але я міг знайти лише стільки способів зробити лінії симетричними, не вдаючись до кульгавого real code # ecod laer
. Я не сприймав настанови №1 дуже серйозно, естетика на першому місці.
Пам'ятайте, що це makefile; 3 послідовних рядки, що починаються з if
, rm
і echo
починаються з вкладки. Інші відступні лінії починаються з пробілів.
me : mr ; env | grep -q DO_US || rm -- mr || SU_OD q- perg | vne ; rm : em
.SILENT:##:TNELIS.
. = a. .a = .
$(.:.=):;:>$@
sandwich:
if expr>/dev/null $$(id -u); then echo 'What? Make it yourself'; fi
rm f- a me mr 2>/dev/null
echo Okay
mr : ; true : ; touch me : em f- mr || rm -f me : em hcuot ; : eurt ; : rm
Використання (команди можуть бути видані в будь-якому порядку):
$ sudo make me a sandwich
Okay
$ sudo make me sandwich
make: *** [sandwich] Error 1
$ sudo make a sandwich
make: *** [sandwich] Error 1
$ sudo make sandwich
make: *** [sandwich] Error 1
$ make me a sandwich
What? Make it yourself
make: *** [sandwich] Error 1
Що стосується настанови №3, то це не хитро приховано, а трохи дивно. Деякі підказки:
Є два різних тестів: один пошук SUDO_USER
, і один тест чи id -u
гравюр 0. Чи бачите ви , чому What?
це НЕ друкуються на корінь? Ви бачите, як відсутність SUDO_USER
причин Okay
не надрукувати?