Tôi có một chương trình nhỏ chứa cấu trúc thư mục sau:
- main.sh
- lib/
- clean.sh
- get.sh
- index.sh
- test.sh
Mỗi tệp chứa một chức năng duy nhất mà tôi sử dụng main.sh
.
main.sh
:
source lib/*
get_products
clean_products
make_index
test_index
Trong hai chức năng đầu tiên ở trên, nhưng hai chức năng thứ hai thì không.
Tuy nhiên, nếu tôi thay thế source lib/*
bằng:
source lib/get.sh
source lib/clean.sh
source lib/index.sh
source lib/test.sh
Mọi thứ hoạt động như mong đợi.
Bất cứ ai cũng biết tại sao source lib/*
không làm việc như mong đợi?
/etc/bashrc
cách nó sử dụng mộtfor
vòng lặp để đối phó/etc/profile.d/*.sh
. Nếu bạn tin tưởng nội dung củalib/
nó có thể được giảm xuống thành một lớp lót:for i in lib/*.sh; do . "$i"; done