Solusi ini tidak mematuhi pedoman # 2 - atau tidak jelas berbentuk sandwich? Saya pergi pada semacam tema palindrome di awal, tetapi saya hanya bisa menemukan begitu banyak cara untuk membuat garis simetris tanpa menggunakan lumpuh real code # ecod laer
. Saya tidak menganggap serius panduan # 1, estetika lebih utama.
Ingat bahwa itu adalah makefile; 3 baris berturut-turut dimulai dengan if
, rm
dan echo
mulai dengan tab. Garis lekukan lainnya dimulai dengan spasi.
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
Penggunaan (perintah dapat dikeluarkan dalam urutan apa pun):
$ 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
Adapun pedoman # 3, ini tidak disembunyikan dengan cerdik, hanya sedikit aneh. Beberapa petunjuk:
Ada dua tes yang berbeda: satu pencarian SUDO_USER
, dan satu tes apakah id -u
cetakan 0. Do Anda melihat mengapa What?
ini tidak dicetak untuk root? Apakah Anda melihat bagaimana kurangnya SUDO_USER
penyebab Okay
untuk tidak dicetak?