Essa solução não segue a diretriz nº 2 - ou é vagamente em forma de sanduíche? Eu comecei com um tipo de tema palíndromo no começo, mas só consegui encontrar muitas maneiras de tornar as linhas simétricas sem recorrer a coxasreal code # ecod laer
. Não levei a diretriz 1 muito a sério, a estética vem primeiro.
Lembre-se de que é um makefile; as 3 linhas sucessivas começando com if
, rm
eecho
começam com um separador. As outras linhas recuadas começam com espaços.
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
Uso (os comandos podem ser emitidos em qualquer ordem):
$ 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
Quanto à diretriz 3, isso não é inteligentemente oculto, apenas um pouco estranho. Algumas dicas:
Existem dois testes diferentes: uma pesquisa SUDO_USER
e um teste para id -u
imprimir 0. Você vê por que nãoWhat?
é impresso para raiz? Você vê como a falta de causas não deve ser impressa?SUDO_USER
Okay