この解決策はガイドライン#2に準拠していません。または、漠然とサンドイッチの形をしていますか?冒頭で一種の回文のテーマに取り組みましたが、ラメに頼らずに線を対称にする方法はたくさんありましたreal code # ecod laer
。私はガイドライン#1をあまり真剣に受け止めていませんでした、美学が最初に来ます。
メイクファイルであることを忘れないでください。始まる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に関しては、これは巧妙に隠されているわけではなく、少し奇妙に見えます。いくつかのヒント:
2つの異なるテストがあります。1つはを検索しSUDO_USER
、もう1つはid -u
0を印刷するかどうかをテストします。ルートが印刷されない理由What?
がわかりますか?あなたはどのように原因の欠如を見ていますかSUDO_USER
Okay
ように印刷されないのか?