ฉันสามารถเรียกใช้คำสั่งนี้จากพรอมต์บรรทัดคำสั่งของฉัน:
cp -r folder/!(exclude-me) ./
หากต้องการคัดลอกเนื้อหาทั้งหมดซ้ำfolder
ยกเว้นไดเรกทอรีย่อยที่มีชื่อexclude-me
ลงในไดเรกทอรีปัจจุบัน งานนี้ตรงตามที่ตั้งใจไว้ อย่างไรก็ตามฉันต้องการสิ่งนี้เพื่อทำงานในสคริปต์ทุบตีที่ฉันเขียนซึ่งฉันมีสิ่งนี้:
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
แต่เมื่อฉันเรียกใช้สคริปต์:
bash my-script.sh
ฉันได้รับสิ่งนี้:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
และฉันก็ไม่รู้ว่าทำไมมันถึงทำงานได้จาก command prompt แต่บรรทัดเดียวกันที่แน่นอนไม่สามารถใช้งานได้ในสคริปต์ทุบตี
env > file1
สคริปต์และดำเนินการ./it
แล้วenv > file2
และsource it
ด้วยความหวังว่าฉันจะได้พบความแตกต่างในenv
s ซึ่งไม่ใช่กรณี ฉันจะแสดงรายการความแตกต่างทั้งหมดระหว่างเชลล์สองโปรแกรมได้อย่างไร (ในกรณีนี้คือแบบโต้ตอบกับแบบไม่โต้ตอบ)