Tôi có thể chạy lệnh này từ dấu nhắc dòng lệnh của mình:
cp -r folder/!(exclude-me) ./
Để sao chép đệ quy tất cả nội dung folder
ngoại trừ thư mục con có tên exclude-me
vào thư mục hiện tại. Điều này hoạt động chính xác như dự định. Tuy nhiên, tôi cần cái này để làm việc trong một kịch bản bash tôi đã viết, nơi tôi có cái này:
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
Nhưng khi tôi chạy tập lệnh:
bash my-script.sh
Tôi nhận được điều này:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
Và tôi không biết tại sao nó hoạt động từ dấu nhắc lệnh, nhưng chính xác cùng một dòng không hoạt động trong tập lệnh bash.
env > file1
trong kịch bản và thực hiện./it
, và sau đóenv > file2
vàsource it
, với hy vọng rằng tôi đã tìm thấy một sự khác biệt trongenv
s, mà không phải là trường hợp. Làm thế nào tôi có thể liệt kê tất cả sự khác biệt giữa hai shell (trong trường hợp này là tương tác so với không tương tác)?