ฉันต้องการทำการดำเนินการกับไฟล์ทั้งหมดในโฟลเดอร์เฉพาะที่ไม่ได้ขึ้นต้นด้วยคำนำหน้าเฉพาะ (พูดexclude_
) ฉันมี bash for
loop พร้อมกับ glob แบบขยายที่มีลักษณะดังนี้:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
บนบรรทัดคำสั่งสิ่งนี้ใช้ได้ผล:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
แต่เมื่อฉันใช้ใน makefile:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
ฉันได้รับข้อผิดพลาดต่อไปนี้:
$ make
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done'
มีบางอย่างที่จำเป็นในการหลบหนีที่ฉันไม่ได้รับ?
.SHELLFLAGS
ไม่ได้ทำงานสำหรับฉัน แต่วางธงโดยตรงในการSHELL=/bin/bash -O extglob -c
ทำ ความคิดใด ๆ