วิธีนี้ไม่เป็นไปตามแนวทาง # 2 - หรือนับเป็นรูปแซนด์วิชอย่างคลุมเครือ ผมไปอยู่กับชนิดของรูปแบบประโยคที่จุดเริ่มต้น แต่ฉันเท่านั้นที่สามารถหาหลายวิธีเพื่อทำให้เส้นสมมาตรโดยไม่ต้อง resorting 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
ไม่ให้พิมพ์อย่างไร