मैं एक विशेष फ़ोल्डर में सभी फाइलों पर एक ऑपरेशन करना चाहता हूं जो एक विशेष उपसर्ग (कहना exclude_
) से शुरू नहीं होता है । मेरे पास एक for
विस्तारित ग्लोब के साथ एक बैश लूप है जो इस तरह दिखता है:
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
लेकिन, जब मैं इसे मेकफाइल में उपयोग करता हूं:
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
दिया। कोई विचार क्यों?