Tôi muốn thực hiện một thao tác trên tất cả các tệp trong một thư mục cụ thể không bắt đầu bằng một tiền tố cụ thể (giả sử exclude_
). Tôi có một for
vòng lặp bash với một quả cầu mở rộng trông như thế này:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
Trên dòng lệnh, điều này hoạt động tốt:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Nhưng, khi tôi sử dụng nó trong makefile:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Tôi nhận được lỗi sau đây:
$ 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'
Có một số lối thoát cần thiết mà tôi đã bỏ lỡ?
.SHELLFLAGS
này không hiệu quả với tôi, nhưng đặt cờ trực tiếp vàoSHELL=/bin/bash -O extglob -c
. Bất cứ ý tưởng tại sao?